当前位置: 首页 > 知识库问答 >
问题:

jsonFormat.printer().print()是如何工作的?

杨俊茂
2023-03-14

我有一个非常简单的原型:

message ChargeCardResponse
{
    bool success = 1;
}

当我试图将其解析为字符串时,我从jsonFormat.printer().print()得到一个非常奇怪的输出,这取决于success值。

ChargeCardResponse.Builder builder = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().print(builder.setSuccess(true).build()));

输出:{“成功”:true}

ChargeCardResponse.Builder builder2 = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().print(builder2.setSuccess(false).build()));

输出:{}

因此,如果我用success属性为打印机赋予false值,它就不能生成JSON格式。我做错了什么?有谁能证实吗?

共有1个答案

端木涵润
2023-03-14

事情是,将success设置为“false”相当于保持默认的“false”值不变。

JsonPrinter会省略默认的proto值,除非它关闭了以下选项:

https://developers.google.com/protocol-buffers/docs/reference/Java/com/google/protobuf/util/jsonformat.printer#IncludingDefaultValueFields--

我认为这应该行得通:

ChargeCardResponse.Builder builder2 = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().includingDefaultValueFields().print(builder2.setSuccess(false).build()));
 类似资料:
  • 这是对二分搜索树的wrt。我以两种方式遍历树。1)顺序遍历树t的顺序遍历是一种递归算法,它遵循左子树;一旦没有更多的左子树要处理,我们就处理右子树。元素按左-根-右顺序处理。2)后顺序遍历树t的后顺序遍历是一种递归算法,它在处理根元素之前遵循左和右子树。元素按左-右-根顺序处理。 我对递归方法和print语句是如何工作的感到困惑。你能给我开导一下吗?

  • 应用程序具有上下文路径-->/spring-form-simple-project 因此,为了访问,我使用: 这个控制器又返回student.jsp,当提交这个student.jsp时,它用-->@RequestMapping(value=“/AddStudent”,method=RequestMethod.post)调用controller 任何关于这通常如何工作的指示都将是有帮助的。 谢谢!

  • 本文向大家介绍hibernate 是如何工作的?相关面试题,主要包含被问及hibernate 是如何工作的?时的应答技巧和注意事项,需要的朋友参考一下 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。

  • 我很想知道谷歌应用商店服务中的Activity认可是如何工作的? 我认为活动是通过加速计数据识别的。是这样吗?。请告诉我详细情况如何

  • 我对GridBagLayout这一主题不熟悉,我无法理解约束、重量和填充之间的确切区别。 我可以而不分配。 除非您指定了至少一个非零值,否则所有组件都会聚集在其容器的中心。这是因为当权重为0.0(默认值)时,GridBagLayout会在其单元格网格和容器边缘之间放置任何额外的空间。 我的问题是,如果这是真的,那么为什么组件之间没有空间,它们看起来是连接的?

  • 从@mock和@injectmocks之间的差异,我理解@injectmocks被用作创建实例的注释,并将用@mock创建的mock注入其中。我想我不明白它是怎么工作的。 以下是我的问题: 在中,当我调用时,它返回一个空集...我的问题是:为什么不抛出(只声明mockedappoinceptions)?也许因为这是一个嘲弄?如果原因是这样,为什么模拟不抛出“NullPointerException