如何在 Protocol Buffers 中实现映射列表?

问题描述 投票:0回答:2

我正在创建一个返回地图列表的 gRPC 响应。这是我想象的结构:

message GetSettingsResponse {
    repeated map<string, string> settings = 1;
}

但是,不支持重复地图,我必须将地图嵌套在单独的消息中才能使其正常工作:

message GetSettingsResponse {
    repeated Setting settings = 1;
}

message Setting {
    map<string, string> setting = 1;
}

这可行,但它迫使我们在客户端和服务器上编写一些令人困惑的代码。有没有办法避免这种解决方案并更接近我想要的结构?

protocol-buffers
2个回答
7
投票

不,基本上。你所拥有的是你在 protobuf 中能做的最接近的事情。


0
投票

我遇到了类似的问题,我想要一条与 Java 中的

List<Map<String,Object>>
相对应的消息。

我通过像这样定义消息解决了我的问题:

import "google/protobuf/struct.proto";

message MyMessage {
    repeated google.protobuf.Struct mapList = 1;
}

希望能有所帮助。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.