【问题标题】:Random field number in protobufprotobuf 中的随机字段编号
【发布时间】: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


【解决方案1】:

我发现这是 protobuf 的 extension 功能,而“随机”数字只是作者硬编码的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2014-08-14
    • 2021-01-22
    • 1970-01-01
    相关资源
    最近更新 更多