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++;
	}

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章