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

x2struct使用介绍

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

  1. struct转化成json字符串
#include 
#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 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", "[email protected]");
	g.members[1] = User(2, "456", "[email protected]");
 
	string json = x2struct::X::tojson(g);// 结构体转json
	cout<
  1. json字符串转化成struct
#include 
#include "x2struct.hpp" // 需要包含这个头文件(头文件和库在文章尾附有链接)

//定义结构体信息
struct ResultInfo
{
	string _id;
	string ft;
	XTOSTRUCT(O(_id,ft)); // 添加宏定义XTOSTRUCT在结构体定义结尾
};

struct ResultList
{
	int ok;
	vector 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:"<
  1. 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测试程序代码

声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:[email protected]

你可能感兴趣的:(代码工具类库)