c++ - protobuf 与 rapidjson 数据格式

标签 c++ json protocol-buffers rapidjson flatbuffers

使用 rapidJSON 我能够将任何类型的数据(rapidJSON 支持)存储为键值。我可以在 protobuf 中这样做吗?如果是,怎么办?

我选择 protobuf 而不是 rapidJSON 的原因是因为它的速度(并且 rapidJSON 中的键比较实际上是一个成本高昂的“字符串”比较)。 或者还有其他选择吗?也许 FlatBuffers ?

要求是针对 int 类型键存储任何类型的数据。比常规 json 更快的序列化/反序列化。

从 C++ 的角度寻找答案。

最佳答案

在 protobuf 中,通常您有一个固定的契约(Contract),将给定的键预解释为给定的类型,但是:还有扩展的概念。通过扩展,可以根据字段编号存储任意数据;这适用于也可以使用常规 API 表达的任何类型。

扩展 API 的便利性和性能取决于实现,但它应该可以从官方 C++ API 中完美使用。

关于扩展的关键点是只有消费者需要理解它们。

关于c++ - protobuf 与 rapidjson 数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653430/

相关文章:

c++ - 多个定义的符号 C++ 错误

c++ - 以不提供构造函数的奇特方式指定 C++ 对象属性

c++删除动态数组的1个元素?

python - 访问 JSON 中的字段时发生 KeyError

java - Jersey rest 服务器 - 将列表的不同结构返回为 json

c++ - 用查找表替换 math.h exp 调用

javascript - 在 Javascript 中从 URL 获取 JSON 数据

tcp - 为什么 Hadoop 不使用 MPI 实现?

java - Google protobuf可以用于android中C和Java服务之间的通信吗?

c++ - 从 ProtoBuf RepeatedField 获取所有元素的最有效方法是什么?