有一段时间了,我开始寻找c++对象和json结构的转化类库
感谢开源社区的蓬勃发展,我在github,sf,codeplex上收获颇丰,简单了解一下包括大名鼎鼎的msgpack,ThorsSerializer,jsoncpp等等不下几十种实现,也亲自使用了其中几种类库。其中的差异化让我惊喜也让我越来越挑剔和贪得无厌
有不少是依赖强大的boost,多产生于c++11尚未推出之前,这类实现不够轻量
有的只能支持json,xml,binary中的一种或两种
有的对stl标准容器支持不够,或者干脆不支持
有的实现不够优雅简洁,类里面依赖各式各样的宏或者必须实现成员函数或者必须实现操作符重写,不够灵活(这里要表扬msgpack,接口简洁不冗余)
有的不支持复合数据类型
有的不能识别指针和对象,甚至不支持指针
有的扩展性不好
....
还有点奢望支持反射
有时间我就在网上搜相关的内容,也对一些活跃着的类库提交过一些想法,但作者认为不符合他们的初衷。有几次冲动想结合这些类库的优点“私人定制”
说了这么多,没错,主角就要登场了,今天偶然发现cereal,很低调的出现在google搜索里,首页介绍和其他类库也一个调调“cereal is a header-only C++11 serialization library. cereal takes arbitrary data types and reversibly turns them into different representations, such as compact binary encodings, XML, or JSON. cereal was designed to be fast, light-weight, and easy to extend - it has no external dependencies and can be easily bundled with other code or used standalone.”
但是我需要的特点他完全满足
好,剩下的时间就交给你们和cereal独处吧,不打扰了