Maps

如果想常见一个关联的map作为数据定义的一部分, protocol buffers 提供方便的快捷语法:

map<key_type, value_type> map_field = N;

key_type可以是任意整型或者字符类型(除了floating point和bytes外任何简单类型),请注意,枚举不是有效的key_type。值类型可以是除其他map以外的任何类型。

如果你想创建一个projects的map, 每个Project消息都关联到一个string key, 可以这样定义:

map<string, Project> projects = 3;
  • map字段不能为 repeated。
  • map元素不能保持特定顺序。
  • 如果存在重复的映射键,则使用最后看到的键。
  • 如果为映射字段提供键但没有值,则序列化字段时的行为与语言相关。在C++、java和python中,类型的默认值被序列化,而在其他语言中没有任何序列化。

向后兼容

对于不支持map的protocol buffers实现仍然可以处理您的数据:

message MapFieldEntry {
  key_type key = 1;
  value_type value = 2;
}

repeated MapFieldEntry map_field = N;

results matching ""

    No results matching ""