C++跨平臺JSON序列化與反序列化開源庫

JsonReflect介紹

JsonReflect是基於C++11實現的跨平臺JSON序列化與反序列化庫。支持將對象序列化爲JSON字符串或者將JSON字符串反序列化爲對象。作者利用宏與C++11的typeid運算符實現一種動態反射機制,大大簡化了序列化與反序列化工作。

安裝方法

1、下載源碼

git clone https://gitee.com/xungen/jsonreflect.git

2、在源碼目錄下執行make命令編譯輸出靜態庫文件libjson.a

3、在源碼目錄下執行make test命令可以查看JsonReflect庫測試結果

4、源碼目前下有一個名爲test.cpp的示例代碼,你可以參考示例代碼的使用方法,示例代碼內容如下:

#include "json.h"

JsonEntity(Item)
{
public:
	//定義名爲ival的int類型成員
	rint(ival);
	//定義名爲bval的bool類型成員
	rbool(bval);
	//定義名爲sval的string類型成員
	rstring(sval);
};

JsonEntity(Entity)
{
public:
	//定義名爲ival的int類型成員
	rint(ival);
	//定義名爲bval的bool類型成員
	rbool(bval);
	//定義名爲sval的string類型成員
	rstring(sval);
	//定義名爲list的vector<Item>類型成員
	rarray(Item, list);
};

int main(int argc, char** argv)
{
	Entity obj;
	Entity tmp;
	sp<Item> item;
	
	obj.ival = 0;
	obj.bval = false;
	obj.sval = "zero";

	item = obj.list.add();
	item->ival = 1;
	item->bval = true;
	item->sval = "one";

	item = obj.list.add();
	item->ival = 2;
	item->bval = true;
	item->sval = "two";

	item = obj.list.add();
	item->ival = 3;
	item->bval = true;
	item->sval = "three";

	//對象序列化爲JSON字符串
	cout << obj.toString() << endl << endl;

	cout << endl;

	//JSON字符串反序列化爲對象
	tmp.fromString(obj.toString());

	cout << tmp.toString() << endl << endl;

	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章