4

我们正计划将我们现有的服务迁移到 grpc 服务。所以需要将服务转换为原型定义的消息类型。在响应中,我们有以自定义对象为键的映射。

例如响应:

 //java
 Map<key_object, Project>

//proto
map<key_object_not_supported, Project> projects = 3;

在官方文档中,他们提到,

其中 key_type 可以是任何整数或字符串类型(因此,除了浮点类型和字节之外的任何标量类型)。value_type 可以是任何类型

是否有任何替代方法可以在 proto3 中实现自定义对象键映射?

4

1 回答 1

7

对地图的支持是一个相当新的扩展。如果您的密钥与约束不匹配,您可以改用旧方法:

定义密钥对消息并将其用作重复字段。因此,在您的示例中:

message KeyValuePair {
  key_object_not_supported key = 1;
  Project value = 2;
}

message MyMap {
  repeated KeyValuePair entries = 1;
}
于 2016-09-12T16:35:30.830 回答