【问题标题】:How to implement Google Protobuf containing map with custom key如何使用自定义键实现包含地图的 Google Protobuf
【发布时间】:2020-09-23 09:03:53
【问题描述】:

我想创建一个 protobuf,它返回一个包含自定义键的映射。当我尝试制作一个时,我收到一个错误:Key in map fields cannot be float/double, bytes or message types。我想知道是否有解决方法。

我正在尝试创建以下类型的地图(作为说明):

message Name {
  string first_name = 1;
  string last_name = 2;
}

message GetNameResp {
  map<Name, string> name_info = 1;
}

那么,这里的Name 可以成为地图的关键吗?我能找到的唯一解决方案是序列化地图,然后以 repeated 值返回。

谢谢!

【问题讨论】:

    标签: protocol-buffers grpc grpc-go


    【解决方案1】:

    映射键可能不是消息类型:

    https://developers.google.com/protocol-buffers/docs/proto3#maps

    您必须在代码中解决这个问题。

    您可以将Name 转换为字符串:

    • 序列化 protobuf 消息
    • 编组为 JSON
    • 散列值(尽管您可能会发生冲突)

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 2014-09-27
      • 2019-02-20
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多