Java: JSON -> Protobuf & back conversion
2022-08-31 14:26:55
我有一个现有的系统,它在GUI和服务器之间使用基于protobuf的通信协议。现在我想添加一些持久性,但目前protobuf消息直接转换为第三方自定义对象。
有没有办法将原型消息转换为json,然后将其持久化到数据库中。
注意:我不太喜欢将二进制protobuf编写到数据库的想法,因为它有一天会变得与较新版本不向后兼容,并以这种方式破坏系统。
我有一个现有的系统,它在GUI和服务器之间使用基于protobuf的通信协议。现在我想添加一些持久性,但目前protobuf消息直接转换为第三方自定义对象。
有没有办法将原型消息转换为json,然后将其持久化到数据库中。
注意:我不太喜欢将二进制protobuf编写到数据库的想法,因为它有一天会变得与较新版本不向后兼容,并以这种方式破坏系统。
正如在回答类似问题中提到的,自v3.1.0以来,这是PropertBuffers支持的一项功能。对于Java,包括扩展模块com.google.protobuf:protobuf-java-util,并使用JsonFormat,如下所示:
JsonFormat.parser().ignoringUnknownFields().merge(json, yourObjectBuilder);
YourObject value = yourObjectBuilder.build();
我们目前正在使用protobuf-java-format将Protobuf消息(的任何子类)转换为JSON格式,以通过我们的Web API发送。Message
只需执行以下操作:
JsonFormat.printToString(protoMessage)