【问题标题】:How can I represent a 2-dimensional array in Protocol Buffers?如何在 Protocol Buffers 中表示二维数组?
【发布时间】:2014-01-24 23:00:00
【问题描述】:

如何在 Protocol Buffers 中表示二维数组?

我需要将intdouble 2d 数组存储为 PB 消息中的字段,例如:

int[][] multi = new int[5][10];

我正在使用 C++、Java 和 C#。

提前致谢。

【问题讨论】:

标签: java protocol-buffers multidimensional-array


【解决方案1】:

协议中没有对此的直接支持。您最好的选择是拥有一组重复的对象,每个对象一个数组 - 即

message Foo {
    repeated int items = 1;
}
...
repeated Foo foos = 1;

【讨论】:

  • 在将 json 有效负载反序列化为 protobuf 对象时,这似乎不起作用。有什么想法吗?
  • @JustinThomas 是 protobuf 序列化的 JSON 吗?如果不是:这首先不是真正受支持的场景。如果你想要一个通用的 JSON 反序列化器,使用一个通用的 JSON 反序列化器,而不是 protobuf 的 JSON 支持
  • 还有额外的关键“项目”。它不是没有键的二维数组。
【解决方案2】:

它不起作用。

我查阅了 grpc 指南,它只支持键值结构。我建议你:


message ListResp { 
   repeated Array list = 1;

}

message Array{
     int64 id = 1; // 
    string name = 2; // 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2018-12-20
    • 1970-01-01
    • 2017-06-04
    • 2020-08-15
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多