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++;
}然后就可以打印出来了 ,祝你也能成功!!!
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 进入详细评论页>>

![cocos2d_x+lua[2]](/uploads/allimg/131030/110J64609-0-lp.jpg)








