{"repo":"xyz347/xpack","free":true,"listed":false,"github":"https://github.com/xyz347/xpack","clone":"git clone https://github.com/xyz347/xpack.git","description":"convert json/xml/bson to c++ struct","language":"C++","stars":659,"topics":["json","xml","bson","cpp","struct","mysql","sqlite","yaml"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"xpack ==== English 用于在C++结构体和json/xml/yaml/bson/mysql/sqlite之间互相转换 只有头文件, 无需编译库文件，所以也没有Makefile。 支持bson，依赖于 libbson-1.0 ，需自行安装。 未经充分测试 ，具体请参考README 支持MySQL，依赖于 libmysqlclient-dev ，需自行安装。 未经充分测试 支持Sqlite，依赖于libsqlite3，需自行安装。 未经充分测试 支持yaml，依赖于yaml-cpp，需自行安装。 未经充分测试 具体可以参考example的例子 ------ 基本用法 容器支持 FLAG 别名 位域 继承 枚举 自定义编解码 union 不定类型 数组 第三方类和结构体 格式化缩进 XML数组 CDATA Qt支持 MySQL 重要说明 基本用法 ---- - 结构体后面用XPACK宏包含各个变量，XPACK内还需要一个字母，不同字母的意义请参考FLAG - 用xpack::json::encode把结构体转json - 用xpack::json::decode把json转结构体 容器支持 ---- 目前支持下列容器(std) - vector - set - list - map - map // 仅JSON，XML不支持 - unordered map (需要C++11支持) - shared ptr (需要C++11支持) FLAG ---- 宏XPACK里面，需要用字母将变量包含起来，比如XPACK(O(a,b))，XPACK可以包含多个字母，每个字母可以包含多个变量。目前支持的字母有： - X。格式是X(F(flag1, flag2...), member1, member2,...) F里面包含各种FLAG，目前支持的有： - 0 没有任何FLAG - OE omitempty，encode的时候，如果变量是0或者空字符串或者false，则不生成对应的key信息 - EN empty as null, 用于json的encode，OE是直接不生成empty的字段，EN则是生成一个null - M mandatory，decode的时候，如果这个字段不存在，则抛出异常，用于一些id字段。 - ATTR attribute，xml encode的时候，把值放到attribute里面。 - SL single line, json encode的时候，对于数组，放在一行里面 - C。格式是C(customcodec, F(flag1,flags...), member1, member2,...)用于自定义编解码函数，详情请参考自定义编解码 - O。等价于X(F(0), ...) 没有任何FLAG。 - M。等价于X(F(M)，...) 表示这些字段是必须存在的。 - A。别名，A(member1, alias1, member2, alias2...)，用于变量和key名不一样的情况 - AF。带FLAG的别名，AF(F(flag1, flag2,...), member1, alias1, member2, alias2...) - B。位域，B(F(flag1, flag2, ...), member1, member2, ...) 位域不支持别名 - I。继承，I(baseclass1, baseclass2....)，里面放父类 - E。枚举: - 如果编译器支持C++11，不需要用E，枚举可以放X/O/M/A里面。 -","default_branch":null,"files":null,"tree":[],"storefront":"/r/xyz347","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/xyz347/xpack/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}