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相关的头文件未发现的问题,那就直接将它注释即可正常使用。

c++ 序列化库iguana使用总结相关推荐

  1. 黑马程序员python笔记_#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库...

    [小宅按]在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化. ...

  2. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  3. boost1.55.0在vs2013上编译序列化库失败的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 之前一直没有使用boost序列化的库,所以一直没法发现boost.155.0序列化库在vs2013下面编译通不过. 今天打算用 ...

  4. 广播变量kyro_利用Kryo序列化库是你提升Spark性能要做的第一件事

    本文基于Spark2.1.0版本 套用官文Tuning Spark中的一句话作为文章的标题: *Often, choose a serialization type will be the first ...

  5. json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...

    Json 简介 Json (JavaScript Object Notation) 是一种轻量级的数据交换格式.它作为目前最欢迎的数据交换格式,也是各大开源贡献者的必争之地,如:阿里爸爸的 fast ...

  6. Newtonsoft.Json序列化库

    Unity自己的Json序列化是不支持字典格式的,而且功能比较单一,这里介绍一个.Net中开源的Json序列化和反序列化库和基本用法以及常用的数据处理方法(github地址:https://githu ...

  7. java序列化库_java 中序列化(Serializable)

    18年5月份,在毕业快一年的时候,我终于把自己从研发助理偏向行政打杂,偶尔写一些前端代码的处境,回归到了初衷-安安静静写前后端代码的小小程序员~过程中的心酸也就不在这里吐啦,毕竟我是小太阳,永不熄灭的 ...

  8. Java json序列化库gson(2)

    2019独角兽企业重金招聘Python工程师标准>>> 基于策略(自定义规则) 上面介绍的了3种排除字段的方法,说实话我除了@Expose以外,其它的都是只在Demo用上过,用得最多 ...

  9. fst java_java快速序列化库FST

    FST fast-serialization 是重新实现的 Java 快速对象序列化的开发包.序列化速度更快(2-10倍).体积更小,而且兼容 JDK 原生的序列化.要求 JDK 1.7 支持. Ma ...

  10. MFC开发IM-第二十四篇、使用 acl 库针对 C++ 对象进行序列化及反序列编程

    在开发网络应用程序时,各个模块之间的数据通信可谓是家常便饭,为了应对这些数据通信时数据交换的要求,程序员发明了各种数据格式:采用二进制数据结构(早期 C 程序员).采用 XML.采用SOAP(坑人的设 ...

最新文章

  1. asp.net中的<%%>形式的详细用法总结
  2. echartsx轴按当前时间自动移动 vue_FANUC系统如何追加第四轴?
  3. js对文字批注_实现SpreadJS的自定制批注
  4. 数据库数据格式化之Kettle Spoon
  5. ARM处理器工作模式
  6. mfc 更新服务器文件,MFC程序版本自动升级更新
  7. Jquery跨域请求php数据(jsonp)
  8. Boostnote跨平台 Markdown 编辑器
  9. mysql for oracle_模块与包 Mysql与Oracle区别
  10. struts1 mysql config_详解Struts1中的struts-config.xml配置文件【一】
  11. pkgm : 压缩包维护与解压脚本
  12. 百旺如何看是否清卡_百旺开票系统每月清卡怎么操作
  13. css3图片倾斜3d动画效果
  14. uplift model增益模型相关术语概念名词汇总
  15. perl pack和unpack的使用详解
  16. 读书笔记 - 《移山之道:VSTS软件开发指南》中的软件测试介绍
  17. 鸿蒙蕴含的哲理,蕴含哲理的唯美句子,喜欢的就收藏吧!
  18. 智慧家庭信息安全白皮书发布,推动智慧家庭叫好又叫座
  19. 同余定理+前缀和解题技巧
  20. 水面模拟--波动方程

热门文章

  1. smart svn破解
  2. Tomcat:The server encountered an internal error () that prevented it from fulfilling this request.
  3. 【语音识别】食物声音识别(三)音频数据特征提取
  4. 数据分析之实战项目——电商用户行为分析
  5. 国内java报表软件简单对比
  6. 共有40款 地图相关开源软件
  7. Fabric实战(10)链码(chaincode)开发-shim包API
  8. Pure DNS 可能是迄今最不稳定的DNS
  9. 当女生成为软件测试员,我才发现年薪30W+其实并不难…
  10. 计算机如何设定远程,电脑远程控制功能怎么设置