2015-06-04 26 views
2

我想将几个C++对象序列化为JSON,并将它们反序列化。很明显,因为C++缺乏反思,所以不能自动完成。我将需要以某种方式告诉序列化程序哪个数据成员进入哪个JSON属性。C++ JSON序列化,Proto-buf风格

我可以用C++做到这一点,但我宁愿使用像Protobuf的message这样的东西来指定映射。在那里的许多JSON C++库中,有没有支持某种元数据的元数据,这些元数据允许我自己映射序列化过程而不用自己实现它?

+0

boost序列化库值得尝试 –

+0

AFAIK,它不会创建JSON。 – zmbq

回答

1

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

http://json.org/

cpp文件也: http://sourceforge.net/projects/jsoncpp/

我认为它搬到混帐回购协议。链接出现在那里。

希望这会有所帮助。

+1

谢谢,但正如我所说的,我宁愿在元数据中定义C++ <--> JSON映射,而不是实际的C++代码。如果我找不到这样的事情,我会按照你的建议自己写。 – zmbq

+0

@zmbq:当我去年搜索时,我无法找到任何定义元数据中C++的JSON的回购。这是我能找到的最好的解决方案。如果你发现这样,请让我知道也:) – Spanky

0

OSS Nokalva的ASN.1工具支持ASN.1模式的JSON编码规则。你编写了一个ASN.1模式(protobufs模式类似但较差),将它编译为你想要的任何语言(在你的情况下是C++),并且你得到了一堆可以串行化到/来自JSON的类。

不免费恐怕。

ASN.1非常棒 - 有各种编码规则以适合所有场合。