我有一个非常简单的原型:
message ChargeCardResponse
{
bool success = 1;
}
当我尝试将其解析为String时,我从JsonFormat.printer()得到一个非常奇怪的输出.print()取决于成功值。
ChargeCardResponse.Builder builder = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().print(builder.setSuccess(true).build()));
输出: { “成功”:是的 }
ChargeCardResponse.Builder builder2 = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().print(builder2.setSuccess(false).build()));
输出:{}
因此,如果我使用success属性为打印机赋予false值,则无法生成JSON格式。 我究竟做错了什么?有没有人可以确认一下?
答案 0 :(得分:2)
问题是将成功设置为“false”等同于保持默认的“false”值不变。
JsonPrinter省略了默认的proto值,除非它关闭了该选项:
这应该有效,我想:
ChargeCardResponse.Builder builder2 = ChargeCardResponse.newBuilder();
System.out.println(JsonFormat.printer().includingDefaultValueFields().print(builder2.setSuccess(false).build()));