2 回答

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

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
是我為了我的目的而總結(jié)的 - 你的結(jié)果可能會(huì)有所不同,哈哈!這允許我從 json 文件加載消息,并反序列化為 grpc 方法的請(qǐng)求。
?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;
? }
添加回答
舉報(bào)