由于项目需要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++;
}
然后就可以打印出来了 ,祝你也能成功!!!