gpt4 book ai didi

java - 为复杂的Java对象生成.proto文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:45 25 4
gpt4 key购买 nike

我想序列化一个复杂的 Java 对象并将其扔到互联网上。第一次,我使用 Google Gson 来序列化该类。 Gson 提供了一种简单的方法来将对象序列化为 JSON 字符串,并通过 toJson 和 fromJson 将 JSON 字符串反序列化为对象。然而,JSON 字符串不是那么紧凑,在序列化 byte[] 数组时会带来很大的开销。

我正在阅读 Google Protocol Buffer。根据教程,用户必须手动为每条消息编写 .proto 文件。 Protocol Buffer 似乎无法识别用户定义的类( Google protocol buffers - user defined java objects as messages fields )。我有两个问题:

  • protocol buffer 是否知道内置的 Java 定义的类,例如 BigDecimal、BigInteger……?
  • 如果我们有一个复杂的类,它递归地包含其他用户定义的类作为成员,我们是否需要遍历所有类的定义并将它们声明为在 .proto 文件中归档的消息?如果是这样,这对用户来说非常可怕(也许他们使用一些外部java库并且没有该库中定义的类的源代码)

有没有一个工具可以自动遍历Java类并生成.proto?

最佳答案

protobuf 中有一个可能的类型列表。 BigDecimal/BigInteger 不是。您可以编写自己的转换步骤。 https://developers.google.com/protocol-buffers/docs/proto

是的,您需要旅行并编写 Java 类和原型(prototype)之间的映射。这是必要的一步,不幸的是每个人都必须这样做。我不认为有一个自动化工具可以做到这一点。也许你可以写一个并开源它? :)

我认为,您要求的是从java类到protobuf消息的完整一对一映射。一般来说,这种映射很难以自动化方式完成。另外,Google 故意将 protobuf 限制为一种序列化协议(protocol),而不是像 hibernate 和 spring 那样的 ORM。

关于java - 为复杂的Java对象生成.proto文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22903448/

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