如何在ProtoBuffer中表示HashMap<Object,Double>实例?



>我需要在协议缓冲区架构中包含以下类的实例作为字段:

public final class Metrics extends HashMap<Object, Double> {
}

但是当我添加以下内容时:

map<bytes, double> metrics = 2;

我有效地Map key cannot be float, double, bytes, message, or enum types收到消息。

我想到的一种方法是将对象(键(转换为字节,然后转换为 base64 键以创建一个新映射,这将是要发送到线路的实际映射(然后在到达另一侧时反转这些操作(。但这似乎太昂贵了,我觉得我必须为每个条目创建一个输入流的实例(并关闭它们(。

对于这种情况,是否有已知的方法?你会怎么做? 我没有找到任何这样的例子。

谢谢

您可以使用键值对列表来模拟 map(这是在 proto3 中引入 map 并将它们向后移植到 proto2 之前的做法(:

message Metric {
bytes key = 1;
double value = 2;
}
repeated Metric metrics = 2;

相关内容

最新更新