jsoncpp 解析json数据
附:#include "CocoStudio/Json/lib_json/json_lib.h"
1.添加jsoncpp库的包含目录(引入头文件.h)
右击项目->属性->(C\C++常规)->附加包含目录(有编辑框下拉"编辑")->##\jsoncpp\include\json;
2.添加jsoncpp库的库目录
右击项目->属性->(连接器)常规->附加包含目录(有编辑框下拉"编辑")->##\jsoncpp\lib;
3.把库名称添加到附加依赖项
右击项目->属性->(连接器)输入->附加依赖项(有编辑框下拉"编辑")->json_vc71_libmtd.lib;
Code
引入头文件
#include "json.h" #include <string> using namespace std;
校验Code
//--------------name-start Json::FastWriter write; Json::Reader reader; //创建JSON数据 //------先定义数据 Json::Value map; map["name"]="Chen"; map["age"]=24; //------编码成json数据 string jsonData =write.write(map); CCLOG("jsonData:%s",jsonData.c_str()); //打印结果 Cocos2d: jsonData:{"age":23,"name":"Himi"} //解析JSON数据 //--先将数据解析到 Value(parseData)中 Json::Value parseData; reader.parse(jsonData, parseData); Json::Value valueName = "default"; Json::Value valueAge = -1; valueName = parseData.get("name", valueName); valueAge = parseData.get("age", valueAge); const char* nameStr =valueName.asCString() ; int age = valueAge.asInt(); CCLOG("name:%s,age:%d",nameStr,age); //打印结果:Cocos2d: name:Himi,age:23 //使用get函数时,第一个参数是key的名, 第二个参数是如果找不到对应key的默认Value //举例我们将name和age,故意写错: // Json::Value parseData; // reader.parse(jsonData, parseData); // // Json::Value valueName = "默认"; // Json::Value valueAge = -1; // valueName = parseData.get("nameHimi", valueName); // valueAge = parseData.get("ageHimi", valueAge); // // const char* nameStr =valueName.asCString() ; // int age = valueAge.asInt(); // CCLOG("name:%s,age:%d",nameStr,age); //打印结果:Cocos2d: name:默认,age:-1 //复杂一点JSON的编写和解析 Json::Value root; Json::Value array; array["arrKey1"]="arrValue1"; array["arrKey2"]="arrValue2"; array["arrKey3"]="arrValue3"; root["arrayKey"] =array; string hJsonData = write.write(root); CCLOG("the complex json data:%s",hJsonData.c_str()); //打印结果 Cocos2d: 复杂一点的JSON格式数据:{"arrayKey":{"arrKey1":"arrValue1","arrKey2":"arrValue2","arrKey3":"arrValue3"}} Json::Value parseRoot; Json::Value parseArray; reader.parse(hJsonData, parseRoot); parseArray = parseRoot.get("arrayKey", parseArray); CCLOG("the getting data:%s,%s,%s", parseArray.get("arrKey1",NULL).asCString(), parseArray.get("arrKey2",NULL).asCString(), parseArray.get("arrKey3",NULL).asCString()); //打印结果:Cocos2d: 解析出的数据:arrValue1,arrValue2,arrValue3