xpackJSON/XML/BSON 与 C++ 结构体的转换库
xpack 是实现 C++ 结构体和 JSON/XML/BSON 互转的库。C++ 初学者可以通过该项目学到高阶的宏技巧和初级的 SFINAE 写法。
基本用法
- 结构体后面用XPACK宏包含各个变量,XPACK内还需要一个字母,不同字母的意义请参考FLAG
 - 用xpack::json::encode把结构体转json
 - 用xpack::json::decode把json转结构体
 
#include <iostream>
#include "xpack/json.h" // Json包含这个头文件,xml则包含xpack/xml.h
using namespace std;
struct User {
    int id;
    string  name;
    XPACK(O(id, name)); // 添加宏定义XPACK在结构体定义结尾
};
int main(int argc, char *argv[]) {
    User u;
    string data = "{\"id\":12345, \"name\":\"xpack\"}";
    xpack::json::decode(data, u);          // json转结构体
    cout<<u.id<<';'<<u.name<<endl;
    string json = xpack::json::encode(u);  // 结构体转json
    cout<<json<<endl;
    return 0;
} 
 容器支持
目前支持下列容器(std)
- vector
 - set
 - list
 - map<string, T>
 - map<integer, T> // 仅JSON,XML不支持
 - unordered_map<string, T> (需要C++11支持)
 - shared_ptr (需要C++11支持)
 
评论
