2014-01-09 121 views
3

我有一個.json文件,其中包含一個字典數組。你能告訴我一個解析它的好方法嗎?我使用cocos2d-x 3.0-alpha版本和放置在external/json目錄中的json類。cocos2d-x JSON文件解析

我嘗試:

Array* items = Array::createWithContentsOfFile("test.json"); 

string fullPath = CCFileUtils::getInstance()->fullPathForFilename("test.json"); 
long bufferSize = 0; 
const char* mFileData = (const char*)FileUtils::getInstance()->getFileData(fullPath.c_str(), "r", &bufferSize); 

string clearData(mFileData); 
size_t pos = clearData.rfind("}"); 
clearData = clearData.substr(0, pos+1); 

string data = clearData.c_str(); 

log("%s", clearData.c_str()); 

Json::Value _root; 
Json::Reader reader; 

reader.parse(data, _root); 

但它們都沒有工作 - 第一個方法返回一個空數組,第二個結果的_root變量,包含整個JSON,但我不能把它變成一個數組,併爲每個數組的元素創建一個單獨的字典對象(這正是我想要做的)。

+0

可以使用rapidjson – Singhak

回答

0

使用JsonCPP你上面提到但CCFileUtils類

unsigned long filesize = 0; 
std::string content; 
std::string fullPath = "path relative to your androidmanifest.xml/index.json" 

unsigned char* fileData = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "r", &filesize); 
content.append((char*)fileData); 
delete[] fileData; 

Json::Value jsonresult; 
Json::Reader reader; 
bool parsingSuccessful = reader.parse(content, jsonresult); 
if (!parsingSuccessful) 
{ 
// report to the user the failure 
return false; 
}