1.使用环境DevC++
a.建立C++工程,并添加.\JsonCPP\jsoncpp-master\jsoncpp-master\src\lib_json中源文件到工程中。
b.添加头文件路径
2.使用实例
a.主函数
#include <iostream>
#include <json/json.h>
using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */
void readJson(string strValue);
string writeJson(); int main(int argc, char** argv) { cout<<"-------------Construct Json!-------------"<<endl;
std::string json = writeJson(); cout<<"-------------Resolve Json!--------------"<<endl;
readJson(json); return ;
}
b.构造json
//构造json格式内容
std::string writeJson() {
using namespace std; //Value类似一个容器,可以添加多个键值对的元素
Json::Value root;
Json::Value arrayObj;
Json::Value item1;
Json::Value item2;
Json::Value item3; item1["cpp"] = "jsoncpp";
arrayObj.append(item1);//添加一对大括号
item2["java"] = "jsoninjava";
arrayObj.append(item2);
item3["php"] = "support";
arrayObj.append(item3); root["name"] = "json";
root["type"] = ;
root["bool"] = ;
root["array"] = arrayObj;//添加一对中括号 //root.toStyledString();//Json格式存储之后,转化为Json格式字符串
std::string out = root.toStyledString();
std::cout << out << std::endl;
return out;
}
c.解析Json
//解析Json格式内容
void readJson(string strValue) {
using namespace std;
//std::string strValue = "{\"name\":\"json\",\"type\":3,\"bool\":true,\
// \"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}"; Json::Reader reader;
Json::Value value; //自动解析strValue中Json内容,并存储到Value中
if (reader.parse(strValue, value))
{
//字符串类型的成员
std::string out = value["name"].asString();//get value of the key --nm
std::cout <<"name:"<< out << std::endl;
//整形类型成员
int num = value["type"].asInt();//get value of the key --nm
std::cout <<"type:"<< num << std::endl; bool bl = value["bool"].asBool();//get value of the key --nm
std::cout <<"bool:"<< bl << std::endl;//bool值输出是0或者1 /* Error --nm
std::string ar = value["array"].asString();//get value of the key --nm
std::cout << ar << std::endl;
*/
//数组类型的成员
const Json::Value arrayObj = value["array"];
for(unsigned j = ;j < arrayObj.size(); j++){
//判断是否含有该键
if (arrayObj[j].isMember("cpp")){
//取出给定键对应的值
out = arrayObj[j]["cpp"].asString();
std::cout <<"cpp:"<< out << std::endl;
}else if (arrayObj[j].isMember("java")){
out = arrayObj[j]["java"].asString();
std::cout <<"java:"<< out << std::endl;
}else if (arrayObj[j].isMember("php")){
out = arrayObj[j]["php"].asString();
std::cout <<"php:"<< out << std::endl;
}
}
}
}
d结果