【问题标题】:Protobuf3 why repeated map is not allowed?Protobuf3 为什么不允许重复映射?
【发布时间】:2018-01-11 06:55:37
【问题描述】:

我正在使用 Protobuf3,我需要创建一个地图列表。 我以为我可以使用repeated map<string, string>,但似乎我不能。

我应该改用什么?

谢谢

【问题讨论】:

    标签: java protocol-buffers


    【解决方案1】:

    本质上,map<...> 等同于:

    repeated TypedPair ...
    

    message TypedPair {
        KeyType key = 1;
        ValueType value = 2;
    }
    

    所以repeated map<...> 将是repeated repeated TypedPair,这没有意义。

    相反,定义一个映射的类型,并使用它:

    message HazMap {
        map<...> map = 1;
    }
    ...
    repeated HazMap maps = 1;
    

    这可能是隐含的吗?也许——但不是现在。

    【讨论】:

    • 这很有趣,但如果我希望这个字段看起来像 [ {"somekey" : "someVal"}, {"someKey2": "Otherval"} ]?这个 HazMap 将在两者之间添加一张地图
    • @Anthony 哦,我明白了!是的,它会添加一个额外的层:{"map":{...}} - 无法修复
    • @Anthony 如果你想完全控制 json:使用 json 序列化库,而不是恰好能够将 json 作为第二语言的 protobuf 库
    猜你喜欢
    • 2016-10-25
    • 2018-08-15
    • 1970-01-01
    • 2023-03-18
    • 2012-03-09
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多