Json---Windows下使用Jsoncpp


上述Json解析使用的是Jsoncpp,要使用Jsoncpp,得做如下幾步的配置:

  1.

   首先從http://sourceforge.net/projects/jsoncpp/下載,壓縮包大約105k。

  2.

   解壓之后,進入 jsoncpp-src-0.5.0\makefiles\vs71  打開 jsoncpp.sln

  3.  

    debug編譯lib_json 項目,會在 jsoncpp-src-0.5.0\build\vs71\debug\lib_json 下生成 json_vc71_libmtd.lib

     

 

    release編譯lib_json 項目

    項目屬性->C/C++ ->輸出文件->匯編輸出 要設置成 無列表 (否則,在自己項目中引用生成的 json_vc71_libmt.lib 編譯時會報錯)。

    會在 jsoncpp-src-0.5.0\build\vs71\release\lib_json 下生成 json_vc71_libmt.lib

     

     

   4

    在自己的項目中,引用 jsoncpp-src-0.5.0\include\json 下的頭文件,和相應的 json_vc71_libmt.lib(debug 版  json_vc71_libmt.lib(release 版)。

    就可以開始使用了。

 Demo:

#include <fstream>
#include "json.h"
using namespace std;

int JsonRead()
{
	ifstream ifs;
	ifs.open("testR.json");

	Json::Reader reader;
	Json::Value value;
	if (!reader.parse(ifs,value,false))
	{
		return -1;
	}

	if (value.isObject()) //單個json串,格式:{"age":23,"name":"往事隨風"}
	{
		string name = value["name"].asString();
		if (value["name"].isString())
		{
			name = value["name"].asString();
			cout << "name:" << name << endl;
		}

		int	age = value["age"].asInt();
		if (value["age"].isInt())
		{
			age = value["age"].asInt();
			cout << "age:" << age << endl;
		}

		int aaa = value["aaa"].asInt(); //value 沒有 "aaa" 這個key的數據時,會給 aaa 賦初值 0
	}
	else if (value.isArray()) //json數組,格式:[{"age":23,"name":"往事隨風"}]
	{
		cout << value.size() << endl;
		for (int i = 0; i < value.size(); i++)
		{
			string name = value[i]["name"].asString();
			if (value[i]["name"].isString())
			{
				name = value[i]["name"].asString();
				cout << "name:" << name << endl;
			}

			int	age = value[i]["age"].asInt();
			if (value[i]["age"].isInt())
			{
				age = value[i]["age"].asInt();
				cout << "age:" << age << endl;
			}

			int aaa = value[i]["aaa"].asInt();
		}
	}

	getchar();
	return 0;
}

int JsonWrite()
{
	Json::Value root;
	Json::FastWriter writer;
	Json::Value person;

	person["name"] = "往事隨風";
	person["age"] = 23;
	//root.append(person);

	string json_file = writer.write(person); //單個json串,格式:{"age":23,"name":"往事隨風"}
	//string json_file = writer.write(root); //json數組,格式:[{"age":23,"name":"往事隨風"}]

	ofstream ofs;
	ofs.open("testW.json");
	ofs<<json_file;
	getchar();
	return 0;
}

int main()
{
	JsonRead();
	JsonWrite();
	return 0;
}

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM