XML、JSON 与C结构体实现快速互转库

it2022-05-05  175

x2struct使用介绍

大家在使用c或者c++做开发的时候,经常会遇到需要把json或者xml的字符串解析出来,那么有没有一个类或库能像JAVA一样是写快速解析或者生成json、xml格式字符串。答案是肯定的,本文重点介绍一下x2Struct解析库的使用方法,使用该库来解析能大大降低代码的复杂度,使程序简洁,不容易出错。

struct转化成json字符串 #include <iostream> #include "x2struct.hpp" // 需要包含这个头文件(头文件和库在文章尾附有链接) //声明结构体 struct User { int64_t id; string name; string mail; User(int64_t i=0, const string& n="", const string& m=""):id(i),name(n),mail(m){} XTOSTRUCT(O(id,name, mail)); // 添加宏定义XTOSTRUCT在结构体定义结尾 }; struct Group { string name; int64_t master; vector<User> members; XTOSTRUCT(O(name, master, members)); // 添加宏定义XTOSTRUCT在结构体定义结尾 }; int main(int argc, char *argv[]) { Group g; g.name = "C++"; g.master = 2019; g.members.resize(2); g.members[0] = User(1, "123", "c_duweie@163.com"); g.members[1] = User(2, "456", "c_duweie@163.com"); string json = x2struct::X::tojson(g);// 结构体转json cout<<json<<endl; return 0; } json字符串转化成struct #include <iostream> #include "x2struct.hpp" // 需要包含这个头文件(头文件和库在文章尾附有链接) //定义结构体信息 struct ResultInfo { string _id; string ft; XTOSTRUCT(O(_id,ft)); // 添加宏定义XTOSTRUCT在结构体定义结尾 }; struct ResultList { int ok; vector<ResultInfo> results; int id; XTOSTRUCT(O(ok,results,id)); // 添加宏定义XTOSTRUCT在结构体定义结尾 }; int main(int argc, char *argv[]) { //json格式字符串 string ss = "{\"ok\": 1, \"results\": [{\"_id\": \"462cc8a54b354235866dc0bf225c7ffd\", \"ft\": \"AAA\"}], \"id\": 12}"; //结构体 ResultList rs; x2struct::X::loadjson(ss, rs, false);//json转结构体 cout<<"id:"<<rs.id<<endl; cout<<"results size:"<<rs.results.size()<<endl; return 0; } makefile文件 ifeq ($(GPP),) GPP=g++ endif INC=-I ../ #ifneq ($(OS),Windows_NT) #LIBCONFIG=../thirdparty/libconfig/lib/libconfig++.a LIBBSON=../thirdparty/libbson/lib/libbson-1.0.a -pthread -lrt #endif json: $(GPP) -o $@ test.cpp $(INC) ./$@ @-rm $@ #os: # echo $(OS)

资源连接

x2Strcut测试程序代码

声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:c_duweie@163.com


最新回复(0)