jsoncpp 解析json数据
附:#include "CocoStudio/Json/lib_json/json_lib.h"
右击项目->属性->(C\C++常规)->附加包含目录(有编辑框下拉"编辑")->##\jsoncpp\include\json;
2.添加jsoncpp库的库目录
右击项目->属性->(连接器)常规->附加包含目录(有编辑框下拉"编辑")->##\jsoncpp\lib;
右击项目->属性->(连接器)输入->附加依赖项(有编辑框下拉"编辑")->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[age24; ------编码成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(const char* nameStr =valueName.asCString() ; int age = valueAge.asInt(); CCLOG(name:%s,age:%d打印结果: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",0); line-height:1.5!important">打印结果:Cocos2d: name:默认,age:-1 复杂一点JSON的编写和解析 Json::Value root; Json::Value array; array[arrKey1arrValue1"; array[arrKey2arrValue2arrKey3arrValue3"; root[arrayKey"] =array; string hJsonData = write.write(root); CCLOG(the complex json data:%s打印结果 Cocos2d: 复杂一点的JSON格式数据:{"arrayKey":{"arrKey1":"arrValue1","arrKey2":"arrValue2","arrKey3":"arrValue3"}} Json::Value parseRoot; Json::Value parseArray; reader.parse(hJsonData,parseRoot); parseArray = parseRoot.the getting data:%s,%s,%s打印结果:Cocos2d: 解析出的数据:arrValue1,arrValue2,arrValue3