微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 protobuf 中,我可以将地图的键限制为某些值吗?

如何解决在 protobuf 中,我可以将地图的键限制为某些值吗?

因此 protobuf 不允许字符串枚举作为映射中的键 我想将地图限制为只有键 a、b 或 c。 我在 Kotlin 工作,可以使用像 [(validate.rules).string = {pattern: "^a|b|c$"}]

这样的验证器
message payload {
  map<desired_constrained_key_here,string> my_map = 1;
}

能做到吗? 我该怎么做? 我在 protobuf 文档中没有看到这一点。

解决方法

不,那是不可能的;没有语法来表达这一点,也没有在任何实现中强制执行。

然而,以下两种方法都是可行的,而且效率更高,但需要不同的用法:

message payload {
  string a = 1;
  string b = 2;
  string c = 3;
}

这最终是表示 3 个可选键 abc 和每个键的 string 值之间的映射的另一种方式。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。