cocos2dx如何解析json
来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:19 点击:次
由于项目需要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++; }
然后就可以打印出来了 ,祝你也能成功!!!
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>