cocos2dx如何解析json

       由于项目需要json格式解析,一开始没接触过 所以比较烦恼,不过现在都可以理解了,给大家分享学习一下,我用的cocos2dx版本是2.2.1

如下先添加头文件:

#include "HelloWorldScene.h"
#include "json_lib.h"
using namespace std;
USING_NS_CC;
这里写了两个函数

//这里为获取jsonvalue的值
CSJson::Value HelloWorld::getJsonFromFile(const char* fileName){  
	CSJson::Reader reader;  
	CSJson::Value jsValue;
	unsigned long ilength;
	//这里是将文件解析出来,付给pBuffer字符串(之前自己没接触过 没写这句搞得很头痛....)
	char* pBuffer = (char *)CCFileUtils::sharedFileUtils()->getFileData(getFullPath(fileName).c_str(), "r", &ilength);
	CCLog("%s",pBuffer);
	//这里将pBuffer的值付给jsValue值
	bool parseRet = reader.parse(pBuffer, jsValue, false);
	CCAssert(parseRet, "Read GridData Error~!!!!!!!!!");
	return jsValue;  
}  
第二个函数

//这里为获取资源路径
std::string HelloWorld::getFullPath(const char* path){  
	CCLOG(cocos2d::CCFileUtils::sharedFileUtils()->fullPathForFilename(path).c_str());
	return cocos2d::CCFileUtils::sharedFileUtils()->fullPathForFilename(path);  
}  

最后在init里面写上

        CSJson::Reader read;
	CSJson::Value myjson = getJsonFromFile("jsontest.json");//利用上面的函数生成一个json。  
	string name;
	int i=0;
	//这里为遍历整个jsonvalue的值
	for (CSJson::ValueIterator a=myjson.begin(); a!=myjson.end(); ++a) {
		
		CSJson::Value value=(CSJson::Value)*a;
		name=value["name"].asString();
		CCLOG("myjson:%s",name.c_str());
		CCLOG("leftBottom:%s",value["leftBottom"].asCString());
		CCLOG("leftTop:%s",value["leftTop"].asCString());
		CCLOG("rightBottom:%s",value["rightBottom"].asCString());
		CCLOG("rightTop:%s",value["rightTop"].asCString());
		CCLOG("position:%s",value["position"].asCString());
                //两种打印方式,可以选择上面字符是我的字段
		name=myjson[i]["name"].asString();
		CCLOG("myjson:%s",name.c_str());
		CCLOG("leftBottom:%s",myjson[i]["leftBottom"].asCString());
		CCLOG("leftTop:%s",myjson[i]["leftTop"].asCString());
		CCLOG("rightBottom:%s",myjson[i]["rightBottom"].asCString());
		CCLOG("rightTop:%s",myjson[i]["rightTop"].asCString());
		CCLOG("position:%s",myjson[i]["position"].asCString());
		i++;
	}

然后就可以打印出来了 ,祝你也能成功!!!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值