xpackJSON/XML/BSON 与 C++ 结构体的转换库

联合创作 · 2023-09-28 10:12


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支持)


浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报