C++解析json文件-VS2010中配置Jsoncpp

1.准备工作
Jsoncpp下载: https://sourceforge.net/projects/jsoncpp/    版本为v0.5.0
最新版本在: https://github.com/open-source-parsers/jsoncpp

参考网址:
http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.html
http://blog.csdn.net/chenqiai0/article/details/47187161
https://my.oschina.net/Tsybius2014/blog/289527


2.配置
解压上面下载的Jsoncpp文件,在jsoncpp-src-0.5.0/makefiles/vs71目录里找到jsoncpp.sln,用VS2010打开。
C++解析json文件-VS2010中配置Jsoncpp_第1张图片

 关键是要配置运行库属性,由于选择是Debug模式,选择多线程调试(MTD),在新工程中运行库的配置要求要保存一致。
C++解析json文件-VS2010中配置Jsoncpp_第2张图片

  配置好了之后进行编译生成,debug路径(xxx \jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\build\vs71\debug\lib_json )下生成静态链接库json_vc71_libmtd.lib 。如果是release版本则类似。

3.新工程中的使用
先配置项目属性,在包含目录中添加json的include路径,在库目录中添加静态库所在的路径
C++解析json文件-VS2010中配置Jsoncpp_第3张图片

C++解析json文件-VS2010中配置Jsoncpp_第4张图片

C++解析json文件-VS2010中配置Jsoncpp_第5张图片


添加静态链接库

C++解析json文件-VS2010中配置Jsoncpp_第6张图片

源码:
#include 
#include 
#include "json/json.h"
using namespace std;
int main()
{
	Json::Reader reader;
	Json::Value root;
	//从文件中读取
	ifstream is;
	is.open("person.json", ios::binary);
	if(reader.parse(is,root))
	{
		//读取根节点信息
		string name = root["name"].asString();
		int age = root["age"].asInt();
		bool sex_is_male = root["sex_is_male"].asBool();
		cout << "My name is " << name << endl;
		cout << "I'm " << age << " years old" << endl;
		cout << "I'm a " << (sex_is_male ? "man" : "woman") << endl;
		//读取子节点信息
		string partner_name = root["partner"]["partner_name"].asString();
		int partner_age = root["partner"]["partner_age"].asInt();
		bool partner_sex_is_male = root["partner"]["partner_sex_is_male"].asBool();
		cout << "My partner's name is " << partner_name << endl;
		cout << (partner_sex_is_male ? "he" : "she") << " is "
			<< partner_age << " years old" << endl;
		//读取数组信息
		cout << "Here's my achievements:" << endl;
		for(int i = 0; i < root["achievement"].size(); i++)
		{
			string ach = root["achievement"][i].asString();
			cout << ach << '\t';
		}
		cout << endl;
		cout << "Reading Complete!" << endl;
	}
	is.close();
	getchar();
	return 0;
}

person.json文件
{
    "name":"Tsybius",
    "age":23,
    "sex_is_male":true,
    "partner":
    {
        "partner_name":"Galatea",
        "partner_age":21,
        "partner_sex_is_male":false
    },
    "achievement":["ach1","ach2","ach3"]
}

结果
C++解析json文件-VS2010中配置Jsoncpp_第7张图片


 

你可能感兴趣的:(C/C++)