您将如何使用协议缓冲区对 Map<String、Object>进行编码?

2022-09-03 15:35:16

我正在尝试使用协议缓冲区进行消息序列化。

我的消息格式应包含Map<字符串,对象>条目...但是我该如何编写 .proto 定义?

据我所知,协议缓冲区没有内置的Map类型。我可以使用重复字段对此进行建模。但我遇到的最大问题是,你需要定义所有类型。我希望我的消息是灵活的,因此我无法指定类型。

有什么想法吗?


答案 1

我会使用键和值对元组进行建模(可能是每个类型的值字段)。然后只需有该元组类型的重复列表。您需要在代码中构建映射本身。

当你说你不能指定类型时 - 你说的是什么样的类型?如果您在元组中有每种类型的可选字段,那么这将适用于所有基元 - 并且您可以通过将它们序列化为字节字符串来映射消息。

听起来你拥有的“非结构”水平可能不适合PB。


答案 2

推荐