【问题标题】:How to add map to message in protobuf3如何在protobuf3中将地图添加到消息中
【发布时间】:2015-06-08 20:01:57
【问题描述】:

我正在尝试使用自 protobuf3 以来支持的地图创建消息。我不知道如何在消息中添加地图。

原始文件片段:

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

    message Queue {
        repeated float position = 1;
  }
}

Java 片段:

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

我可以得到dataBuilder.getMyMap(),但我对“设置”有问题

谢谢

【问题讨论】:

    标签: java protocol-buffers


    【解决方案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 代码的文档,关于地图字段的部分。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        使用 putAllxxx()

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-01
          • 2022-01-19
          • 2013-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多