- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道如何检索从字节加载的 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/
我正在尝试在 visual studio 2015 中调试 app_engine 项目。到目前为止,我有这些行: 我安装了 pip:端点、protopc、appengine 和 google-api-
我有一个 OrderList 类型的 protobuf 消息 message OrderList { repeated Order orders = 1; } 我想将这个订单列表传递到我编写的自定
我正在尝试使用 Google 的 ProtocolBuffer 在服务器/客户端架构中发送/接收数据。我能够将两者与 winsock 连接起来,并且能够使用它从 ProtocolBuffer 发送和接
我想知道如何检索从字节加载的 protobuf 的类型。 例如: Worklist work = Worklist.newBuilder().build(); byte[] msg = work.to
是否可以以 ProtocolBuffer 格式在 BigQuery 中导入数据?我已经有一个(非常)大的数据集采用这种格式,现在我想将它们推送到 BigQuery。但如果我能避免翻译成 json 左右
嗨,我是一名中国 iOS 工程师。 我正在尝试在 iPhone 上运行 Protocol Buffer ,我下载了 metasyntactic project来自谷歌代码,并按照您的介绍进行操作。 但
我最近升级了我的代码库(Java、C++ 和 C#)以使用 proto3。就 C# 而言,这涉及对代码的 2000 多次更改。这主要是语义上的,而且一切都很好,但有一个问题我似乎无法理解;序列化/反序
我从我通常使用的原型(prototype)类创建了一个 ProtocolBuffer 对象,我需要将它序列化。现在,我获取该对象并对其调用 SerializeToArray(),如下所示: int s
从事宠物项目(cassandra、spark、hadoop、kafka)我需要一个数据序列化框架。查看常见的三个框架 - 即 Thrift、Avro 和 Protocolbuffers - 我注意到它
我们最近才在 out 平台中采用 ProtocolBuffers,并且我在 v3 中看到了 FieldMasks 的引入,但我们似乎无法弄清楚如何使用它们。 我们已经使用 v3 编译器生成了我们的 p
我正在编写一个程序,该程序应该通过 ZeroMQ 发送 C 结构。因此,我使用 Google 的 ProtocolBuffers 来序列化结构。 我现在遇到的问题是我的订户端没有收到任何内容。发布者打
我有这段代码,它在升级 GAE Python NDB 之前可以工作: class MyHandler(webapp2.RequestHandler): def get(self,urlString
我使用 protobuf-net 序列化了数据,并且能够在 C# 中进行相同的处理。 放置一个 C# 虚拟 w# var file = File.Create("animal.bin"); //Cre
我开始将自定义序列化机制迁移到 Protocol Buffer 。一种特别经常使用的数据类型是 BigDecimal。 有谁知道在 Protocol Buffer 中序列化它的好方法吗?我们当前的序列
我是一名优秀的程序员,十分优秀!