我有一个现有的系统,它在GUI和服务器之间使用基于协议的通信协议。现在,我想添加一些持久性,但目前protobuf消息直接转换为第三方自定义对象。
有没有办法将proto消息转换成json,然后保存到数据库中。
注:我不太喜欢将二进制协议写到数据库的想法,因为有一天它可能会变得不能向后兼容较新的版本,并以这种方式破坏系统。
发布于 2017-03-06 06:47:53
正如在an answer to a similar question中提到的,由于v3.1.0,这是ProtocolBuffers支持的特性。对于Java,包含扩展模块com.google.protobuf:protobuf-java-util并使用JsonFormat,如下所示:
JsonFormat.parser().ignoringUnknownFields().merge(json, yourObjectBuilder);
YourObject value = yourObjectBuilder.build();
发布于 2015-02-17 00:42:07
我们目前正在使用protobuf-java-format将我们的Protobuf消息(Message
的任何子类)转换成JSON格式,以便通过我们的web API发送。
只需执行以下操作:
JsonFormat.printToString(protoMessage)
发布于 2015-02-17 13:06:45
我不太喜欢将二进制协议写到数据库的想法,因为有一天它可能会变得不能向后兼容较新的版本,并以这种方式破坏系统。
将protobuf转换为JSON进行存储,然后在加载时转换回protobuf更有可能产生兼容性问题,因为:
<->
尽管如此,有许多库可以将协议转换为JSON,通常构建在Protobuf反射接口上(不要与Java反射接口混淆;Protobuf反射是由com.google.protobuf.Message
接口提供的)。
https://stackoverflow.com/questions/28545401
复制相似问题