gpt4 book ai didi

java - Google ProtocolBuffer 反序列化类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:25 25 4
gpt4 key购买 nike

我想知道如何检索从字节加载的 protobuf 的类型。

例如:

Worklist work = Worklist.newBuilder().build();
byte[] msg = work.toByteArray();

基本上我需要找到一种方法来检索消息类型并且应该打印工作列表。

谢谢。

最佳答案

Protobuf 消息本身并不是自描述的。在解析字节之前,您需要知道消息类型。在您的情况下,关于解析字节数组 msg 的代码必须知道这些字节代表一个 Worklist,然后调用 Worklist 类中的解析实现。

但是如Techniques中所述您可以设计将元数据作为有效负载的一部分提供的类。

[更新]

另一种方法 - 特别是当您使用 protobuf 创建用于发送/接收的消息时,是定义一个顶级消息类。所有发送/接收的消息都是这种类型。然后对于此消息中可能包含的各种类型的内容(例如 WorkItem),使用 protobuf 扩展。我认为 extensions 上的文档比 self 描述消息好一点。

双方都需要知道可用的扩展,但是一旦您解析了消息,您就可以动态查询消息对象以查看哪些扩展(如 WorkItem)已被填充。

关于java - Google ProtocolBuffer 反序列化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960942/

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