如何在protobuf3中添加地图到消息

时间:2015-06-08 20:01:58

标签: java protocol-buffers

我正在尝试使用protobuf3支持的地图创建消息。我无法弄清楚如何将地图添加到消息中。

Proto文件片段:

message MyData {
    map<string, Queue> myMap = 1;

    message Queue {
        repeated float position = 1;
  }
}

Java片段:

MyData.Builder dataBuilder = SnowflakeData.newBuilder();
dataBuilder. ???

我可以获得dataBuilder.getMyMap(),但我对“设置”

有疑问

由于

3 个答案:

答案 0 :(得分:1)

protoc在邮件构建器中生成以下方法:

public Map<String, Queue> getMutableMyMap()`

它可用于向您的字段添加元素:

// ...
MyData.Builder dataBuilder = MyData.newBuilder();
Map<String, Queue> map = dataBuilder.getMutableMyMap();
map.put("key1", queue);

Here是google关于生成的java代码的文档,有关地图字段的部分。

答案 1 :(得分:0)

.getMutableXMap() 已弃用。相反,您可以使用 .putX()

答案 2 :(得分:0)

使用 putAllxxx()

MyData.Builder dataBuilder = SnowflakeData.newBuilder();
dataBuilder.putAllMyMap(targetMap)