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;
}
添加回答
举报