将 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
如果您将人名移至对象名称,这可能会使互操作性变得更加困难——当然,这取决于您试图用它做什么。
我正在尝试找到将生成的多个 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 如果您将人名移至对象名称,这可能会使互操作性变得更加困难——当然,这取决于您试图用它做什么。