jsoncpp使用篇(一)

1. 交叉编译链接: linux编译jsoncpp_linux交叉编译jsoncpp_我是谁??的博客-CSDN博客

2. json格式的解析

json文件包含内容如下,需要解析出zhangsan及其同学的信息;

{
	"name":"zhangsan",
	"age":18,
	"score":{
	  "math":"prefect",
	  "english":90
	},
	"classmate":[
		{
			"name":"lisi",
			"age":19,
			"score":{
			  "math":"good",
			  "english":120
			}
		},
		{
			"name":"wanger",
			"age":17,
			"score":{
			  "math":"nice",
			  "english":88
			}
		}
	]
}

 利用jsoncpp解析上述json内容的c++代码如下:

Json::Value json_value;
Json::Reader json_reader;
ifstream infile("./info.json",ios::binary);
if(infile.is_open()){
   if(json_reader.parse(infile, json_value)){
        std::string ZSName = json_value["name"].asString();
        Json::Int ZSAge = json_value["age"].asInt();
        std::string ZSMath = json_value["score"]["math"].asString();
        Json::Int ZSEng = json_value["score"]["english"].asInt();
        std::cout << "Name:" << ZSName << " Age:"<

 

 3. 打包为json格式

//打包
Json::Value json_value;
json_value["name"] = Json::Value("zhangsan");
json_value["age"] = Json::Value(18);

Json::Value score;
score["math"] = Json::Value("prefect");
score["english"] = Json::Value(90);
json_value["score"] = score;

Json::Value classmateArr;

//打包lisi信息
Json::Value classmateLi;
classmateLi["name"] = Json::Value("lisi");
classmateLi["age"] = Json::Value(19);

Json::Value classmateScoreLi;
classmateScoreLi["math"] = Json::Value("good");
classmateScoreLi["english"] = Json::Value(120);
classmateLi["score"] = classmateScoreLi;

//打包wanger信息
Json::Value classmateWang;
classmateWang["name"] = Json::Value("wanger");
classmateWang["age"] = Json::Value(17);

Json::Value classmateScoreWang;
classmateScoreWang["math"] = Json::Value("nice");
classmateScoreWang["english"] = Json::Value(88);
classmateWang["score"] = classmateScoreWang;

//加入数组
classmateArr.append(classmateLi);
classmateArr.append(classmateWang);

//将数组加入主体
json_value["classmate"] = classmateArr;

//写入文件
Json::FastWriter writer;
const std::string json_file = writer.write(json_value);

ofstream outfile("/mnt/mount/photo/writeInfo.json",ios::binary);
outfile.write(json_file.c_str(), json_file.length());

outfile.close();

/*
内容和上面一样,只是排版是横向的;
*/

你可能感兴趣的:(开源库,#,jsoncpp,jsoncpp)