gpt4 book ai didi

java - 语言特定数据结构的 protobuf 序列化

转载 作者:行者123 更新时间:2023-11-30 12:01:44 25 4
gpt4 key购买 nike

使用谷歌的 Protocul Buffers ,我有一个已经用 Java 编写的服务,它已经有自己的数据结构。我想使用 pb 来传递消息,我正在寻找一种方法来将我在 Java 中拥有的现有数据结构序列化为 pb。我可以从头开始定义 pb 中的所有数据结构,这可能是正确的方法,但我太懒了。所以,假设我有一个 Java(或其他支持的语言)的 Person 类或一个包含数十个属性的 Plane 类,有没有办法将该类序列化为 pb?我可以拥有 Plane 类型的 pb 属性吗? (当Plane不是pb时,就是Java类)

最佳答案

不,你不能。 protobuf 消息中的字段始终是原语(基本上是数字、字符串和字节数组)、protobuf 枚举(作为 Java 枚举生成)或 protobuf 消息——当然还有所有这些的重复版本。

您可能会编写一个使用反射从 Java 类创建 .proto 文件的工具,但我怀疑您会发现手动完成它会更快。特别是,如果您确实使用了反射,您需要确保始终使用相同的名称生成字段,以保持兼容性。您可以做的一件事是注释 Java 类并编写代码以根据这些注释生成 .proto 文件 - 或者甚至可能使用注释直接序列化为 proto 格式。就我个人而言,我建议以某种方式创建 .proto 文件,而不是有效地重写 PB 项目 - 否则在已经经过全面测试的代码中引入错误的风险很大。

如果您确实创建了一个注释系统,我相信 Kenton Varda(以及 PB 社区的其他成员)会有兴趣看到它。

关于java - 语言特定数据结构的 protobuf 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/295017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com