Java 我怎么知道protobuff的json格式应该是什么?

Java 我怎么知道protobuff的json格式应该是什么?,java,protocol-buffers,protobuf-c,Java,Protocol Buffers,Protobuf C,我是protobuf的新手,我想将一些protobuf保存为json格式,并了解protobuf的完整格式。我尝试创建protobuf的一个空实例,并将其保存为json,但这只会给我一个空的json对象,{} 如果我为一个属性填充一个值,并将其序列化,我会在json中得到该属性,这很好,但我不想对每个protobuf的所有属性都这样做 有没有一种方法可以让我在不为每个字段提供值的情况下查看protobuf的完整json格式? 笔记 我在Java中使用Google的protobuf库,可以序列化

我是protobuf的新手,我想将一些protobuf保存为json格式,并了解protobuf的完整格式。我尝试创建protobuf的一个空实例,并将其保存为json,但这只会给我一个空的json对象,
{}

如果我为一个属性填充一个值,并将其序列化,我会在json中得到该属性,这很好,但我不想对每个protobuf的所有属性都这样做

有没有一种方法可以让我在不为每个字段提供值的情况下查看protobuf的完整json格式?

笔记
  • 我在Java中使用Google的protobuf库,可以序列化和反序列化我的对象,我只是不知道如何为特定对象编写json
  • 我查看了一些信息,但没有发现任何有用的信息
    • 是的,是的

      或者,要查看示例而不更改默认值,可以在打印时指定
      includingDefaultValueFields

      String json = JsonFormat.printer().includingDefaultValueFields().print(message);
      

      (这至少适用于原语;我怀疑如果嵌套消息尚未初始化,它将为嵌套消息打印
      null

      与所做的没有什么不同,但以下是我为实现目的而编写的内容-您的结果可能会有所不同,哈哈!这允许我从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;
        }
      

      它似乎只适用于原语,但总比没有好。。。谢谢如果你设置了一个对象,它会转储它和它的原语,这非常有帮助。如果其他人想知道如何为任何嵌套消息创建一个实例,每个对象上都有一个
      .newBuilder()
      方法,可以让你创建一个实例