java - 您将如何使用 Protocol Buffers 对 Map<String, Object> 进行编码?

标签 java protocol-buffers amqp

我正在尝试使用 Protocol Buffers用于消息序列化。

我的消息格式应该包含 Map< String, Object > 条目……但是我该如何编写 .proto 定义?

据我所知,Protocol Buffers 没有内置的 Map 类型。我可以使用重复字段围绕它建模。但我遇到的大问题是,您需要定义所有类型。我希望我的消息是灵活的,所以我不能指定类型。

有什么想法吗?

最佳答案

我会用一个键和一个值(可能是值可能是每种类型的一个值字段)来建模一个元组。然后只需重复该元组类型的列表。您需要在代码中构建 map 本身。

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

听起来您的“非结构化”水平可能不适合 PB。

关于java - 您将如何使用 Protocol Buffers 对 Map<String, Object> 进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102900/

相关文章:

java - org.eclipse.jdt.annotation.NonNull 类型无法解析。它是从所需的 .class 文件中间接引用的

java - 基于 2D Tile 的平滑照明

java - 将 gdata jar 复制到根目录 : `WEB-INF/lib` or to subdirs: `WEB-INF/lib/gdata/blogger/2.0` , 等?

serialization - 谷歌 Protocol Buffer

AMQPNETLITE - ActiveMQ Artemis (Red Hat AMQ) - 自动创建多消费者多播队列

java - Spring Boot 应用程序将不会连接到第二个数据源

.net - .NET 中是否有生产质量的 Google Protocol Buffers 实现

go - Protocol Buffer 文件中使用的 go_package 选项是什么?

python - 如何从 rabbitMQ 中永久删除 celery 任务?

synchronization - 消息队列是地理分布式部署的正确工具吗?