将 Java protobuf class 写入自定义 JSON 格式

Write Java protobuf class to custom JSON fomat

我正在尝试找到将生成的多个 protobuf Java classes 打印为自定义人类可读 JSON 格式的最佳方法。

给定以下使用从 protobuf 生成的 Java class 的代码:

Person.Builder personBuilder = PersonData.newBuilder();
Person person = personBuilder
  .setName("John Doe")
  .setAge("99")
  .build();

以下是使用new JsonFormat().printToString(person)时的默认JSON表示:

{ "name": "John Doe", "age":99 }

所需的 JSON 表示是:

"John Doe":{
  "age":99
}

对于多个 protobuf 模型,是否有通用的通用方法来实现上述目标?

您可以通过将 Person 对象转换为 Map 结构并放置您选择的名称-值对来实现。 JsonFormat 本身将遵守规范 https://developers.google.com/protocol-buffers/docs/proto3 如果您将人名移至对象名称,这可能会使互操作性变得更加困难——当然,这取决于您试图用它做什么。