上述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;
}
