cocos2d-x JSON 文件解析

cocos2d-x JSON file parsing

本文关键字:文件 JSON cocos2d-x      更新时间:2023-10-16

我有一个.json文件,包含一个字典数组。你能告诉我一种解析它的好方法吗?我正在使用 cocos2d-x 3.0-alpha 版本和 json 类,放置在外部/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);

但它们都不起作用 - 第一种方法返回一个空数组,第二种方法生成一个包含整个 JSON 的 _root 变量,但我无法将其放入数组并为每个数组的元素创建一个单独的字典对象(这就是我正在尝试做的)。

使用上面提到的 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;
}