使用JsonCPP解析JSON数据 C++
前面已经把JSON的结构,和常用的结构进行了说明,本章开始讲述,如何用c++解析jSON文件,闲言少叙,直接上代码。
testjson.cpp 文件
#include "stdafx.h"
#include<iostream>
#include <string>
#include "json.h" //包含头文件
using namespace std;
using namespace Json;
void readJson();
void writeJson();
int main(int argc,char** argv)
{
readJson();
printf(“------------------------------------------------------------------------------------------\n);
writeJson();
return 0;
}
//解析JSON数据
void readJson()
{
std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";
Json::Reader reader;
Json::Value value;
if (reader.parse(strValue,value))
{
const Json::Value arrayObj = value["array"];
for (unsigned int i = 0; i < arrayObj.size(); i++)
{
if (!arrayObj[i].isMember("cpp"))
continue;
out = arrayObj[i]["cpp"].asString();
printf(“%s\n",out.c_str());
if (i != (arrayObj.size() - 1))
printf("\n");
}
}
}
//生成JSON格式数据
void writeJson()
{
Json::Value root;
Json::Value arrayObj;
Json::Value item;
item["cpp"] = "jsoncpp";
item["java"] = "jsoninjava";
item["php"] = "support";
arrayObj.append(item);
root["name"] = "json";
root["array"] = arrayObj;
root.toStyledString();
std::string out = root.toStyledString();
printf(“%s\n",out.c_str());
}
编译执行后,可以看到输出结果:
总结
以上是c++JSONCpp解析JSON数据的全部内容,文章中简单示例说明了json串的读和写的简单例子,至于jsoncpp的详细开发,后面文章再详细说明。