如何在没有定义的情况下获得Google Protobuf消息的结构

我必须在没有消息定义的情况下将protobuf消息的消息结构传送给我。 使用UnknownFieldSet方法,我能够获得消息的字符串表示,如下所示:

1: "a" 2: { 3:"b" 4:"c" } 

字段2代表什么数据结构? 使用UnknownFieldSet.Field.getGroupList我能够获得字段3和4的内容,这是否意味着字段2具有“已弃用”的组结构?

如果您发布了我们可以告诉您的原始二进制数据 – 或者您可以查看协议缓冲区编码文档 。 如果您看到线类型为3的字段,则表示组。

我对UnknownFieldSet API并不像我应该那样熟悉,但它确实听起来像是在处理一个组。

另一方面,我预计群组的大部分用途都是谷歌的内部 – 这些数据来自哪里? 不可否认,没有什么可以阻止人们使用已弃用的组格式而不是嵌入式消息,但我希望很少有人这样做…

有什么理由你不能要求涉及.proto文件吗? 虽然某些信息当然可以从协议缓冲区中收集而没有它们的定义,但它们实际上被设计用于两端知道消息格式的情况 – 尽管可能是不同的版本。