【问题标题】:C++ JSON Serialization, Proto-buf styleC++ JSON 序列化,Proto-buf 风格
【发布时间】:2015-06-04 08:18:46
【问题描述】:

我想将几个 C++ 对象序列化为 JSON,然后将它们反序列化。显然,由于 C++ 缺乏反射,这不能自动完成。我需要以某种方式告诉序列化程序哪个数据成员进入哪个 JSON 属性。

我可以用 C++ 做到这一点,但我宁愿使用类似 Protobuf 的 message 来指定映射。在众多 JSON C++ 库中,是否有一个支持某种元数据,允许我映射序列化过程而无需自己实现?

【问题讨论】:

  • boost序列化库值得一试
  • AFAIK,它不会创建 JSON。

标签: c++ json serialization


【解决方案1】:

您可以简单地使用 JSON cpp 或 C 文件并将它们用作 API。这就是我为之前的项目所做的。 C++ 没有像 JAVA 这样的内置 JSON 支持。 因此,包括文件并将 JSON 函数用作 API。您可以单独构建它并将其静态链接到您的程序。转到 JSON 主页以获取语言相关文件:

http://json.org/

对于 CPP 文件: http://sourceforge.net/projects/jsoncpp/

我认为它已移至 git repo。链接在那里。

希望这会有所帮助。

【讨论】:

  • 谢谢,但正如我所说,我宁愿在元数据中定义 C++JSON 映射,而不是实际的 C++ 代码。如果我找不到能做到这一点的东西,我会按照你的建议自己写。
  • @zmbq :当我去年搜索时,我找不到任何在元数据中定义 C++ 的 JSON 的存储库。这是我能找到的最好的解决方案。如果你发现这样的,也请告诉我:)
【解决方案2】:

OSS Nokalva 的 ASN.1 工具支持 ASN.1 模式的 JSON 编码规则。

您编写一个 ASN.1 架构(protobufs 架构类似但较差),将其编译为您想要的任何语言(在您的情况下为 C++),然后您将获得一堆可以序列化到 JSON 的类。

恐怕不是免费的。

ASN.1 很棒 - 有各种各样的编码规则来适应各种场合。

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2011-04-25
    • 2023-03-05
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    相关资源
    最近更新 更多