Cocos2dx2.2.1 jsoncpp 解析json数据

29 篇文章 0 订阅

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
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值