c++ 序列化库iguana使用总结

c++ 序列化库iguana使用总结

iguana是一个轻量的c++序列化库,可以将c++类序列化成json或者xml,只需引用头文件就可以使用,但是只支持c++17。
github:https://github.com/qicosmos/iguana


序列化成JSON

以下是引用的官方的例子:

struct person
{
    std::string  name;
    int          age;
};

REFLECTION(person, name, age) //define meta data

通过REFLECTION来定义元素据
下面这个是序列化的代码

person p = { "tom", 28 };
iguana::string_stream ss;
iguana::json::to_json(ss, p);
std::cout << ss.str() << std::endl; 

输出结果为:

{"name":"tom","age":28}

以上是最基本的序列化代码,序列化成xml和json一样,官方例子很简单。


使用过程中遇到的问题:
1.当想序列化基类中的属性时,也必须要在子类的REFLECTION中填充基类的属性。(可能是我没找到方法,暂时未发现作者提供了什么方法)

struct person
{
    std::string  name;
    int          age;
};
#define person_member name,age
REFLECTION(person, person_member);

struct superman:person
{
    int fly;
};
#define superman_member fly,person_member
REFLECTION(superman, superman_member);

我暂时通过这一种方法解决这种问题。
2.序列化时,iguana支持持c++的基本数据类型,如果是一些其他的类或者自定义类,必须先REFLECTION后才可以序列化,否则会出现函数重定义等各种问题。
3.我在QT项目中使用此库时,一开始将自定义类和REFLECTION放到头文件里面,编译时QT moc不成功,后来将REFLECTION放到需要用到序列化的源文件种就解决问题。
4.如果在使用时,出现boost相关的头文件未发现的问题,那就直接将它注释即可正常使用。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值