【发布时间】:2019-02-04 14:00:28
【问题描述】:
服务器以 protobuf 格式发送响应。我试图使用 protoc "decode_raw" 模式重新创建定义(原始文件),但遇到了一些奇怪的结构:
2 {
1: 215647270
2 {
215647270 {
1 {
2: "30093005"
}
}
}
5: 360883463
}
如您所见,字段 #1 (215647270) 的值是对另一个字段的某种引用。该值(和分支分别)是随机的。我在 Protobuf 官方文档中找不到任何关于字段“动态”生成的信息。 有谁知道如何用 Protocol buffers 消息来描述这个结构?
【问题讨论】:
-
没有上下文,很难猜到...那些 可能 只是唯一标识符,例如 db-id,由于某些原因,它会被重复。如果不是
5,我可能会说它也可能是map<int, Foo>(对于某些Foo)。您是否有任何上下文可以与我们分享以帮助您破译这一点?此外,您可能会发现 protogen.marcgravell.com/decode 很有用 - 类似于decode_raw的概念,但(可以说)使用起来更友好 -
@MarcGravell 不幸的是,我没有任何上下文。这些数字的含义对我来说并不重要。最重要的是恢复这个结构的protobuf定义。问题是用protobuf语言描述哪个数字是另一个字段的值的字段。
-
嗯,这不是在protobuf 语言中的概念,但在data - 非规范化等 - 作为说明,您可能有
int orderId = 1; Order order = 2;,当然Order有它自己的id字段,它的值与我们在orderId中看到的值相同。显然,这纯粹是一个例子。
标签: protocol-buffers