使用谷歌的Protocul Buffers,我有一个已经用Java编写的服务,它已经拥有自己的数据结构。我想使用pb来传递消息,我正在寻找一种方法来将我在Java中的现有数据结构序列化为pb。 我可以从头开始定义pb中的所有数据结构,这可能是正确的方法,但我太懒了。 所以,假设我有一个Java类(或其他支持的语言)的Person类或一个有几十个属性的Plane类,有没有办法将该类序列化为pb?我可以使用Plane类型的pb属性吗? (当Plane不是pb时,它是一个Java类)
答案 0 :(得分:3)
您可能会编写一个使用反射从Java类创建.proto文件的工具,但我怀疑您只是手动执行它会更快。特别是,如果 使用反射,则需要确保始终使用相同的名称生成字段,以保持兼容性。您可能做的一件事是注释Java类并编写代码以基于这些注释生成.proto文件 - 甚至可能使用注释直接序列化为proto格式。我个人建议用一些方式创建.proto文件,而不是有效地重写PB项目 - 否则在已经经过彻底测试的代码中引入bug的风险很大。
如果你做创建一个注释系统,我相信Kenton Varda(以及PB社区的其他成员)会有兴趣看到它。
答案 1 :(得分:-2)
我能想到的一种方法是在protobuf中使用字符串字段,并使用Java的原始序列化将Java类序列化到该字段。这样,假设消息的接收者知道如何读取/反序列化它,我可以很容易地将Java序列化为Java消息。
但这种技术有缺点。仅举几例:
但是 - 它可以在短期内完成工作。