2 回答

TA貢獻1906條經驗 獲得超10個贊
是的,proto3 的 JSON 格式已記錄。
或者,要查看示例而不更改默認值,您可以includingDefaultValueFields
在打印時指定:
String?json?=?JsonFormat.printer().includingDefaultValueFields().print(message);
(這至少應該適用于基元;我懷疑null
如果嵌套消息尚未初始化,它會打印嵌套消息。)

TA貢獻2037條經驗 獲得超6個贊
是我為了我的目的而總結的 - 你的結果可能會有所不同,哈哈!這允許我從 json 文件加載消息,并反序列化為 grpc 方法的請求。
?import com.google.protobuf.InvalidProtocolBufferException;
? import com.google.protobuf.MessageOrBuilder;
? import com.google.protobuf.util.JsonFormat;
? /**
? ?* Convert gRPC message to Json string.
? ?*
? ?* @param messageOrBuilder the gRPC message
? ?* @return a Json string
? ?*/
? public static String grpcMessageToJson(MessageOrBuilder messageOrBuilder) {
? ? String result = "";
? ? if (messageOrBuilder == null) {
? ? ? return result;
? ? }
? ? try {
? ? ? result = JsonFormat.printer().print(messageOrBuilder);
? ? } catch (InvalidProtocolBufferException e) {
? ? ? LOGGER.warn("Cannot serialize the gRPC message.", e);
? ? }
? ? return result;
? }
添加回答
舉報