无法在cocos2dx中处理JSON响应

时间:2016-02-26 10:35:21

标签: c++ ios json web-services cocos2d-x

我想使用以下代码在游戏中使用网络服务:

std::vector<char> *dataa = response->getResponseData();
std::string ret(&(dataa->front()), dataa->size());
CCLOG("%s", ("Response message: " + ret).c_str());

ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(ret.c_str());

变量dict被赋值为&#34; nil&#34;。是否可以在不创建文件的情况下获得非空ValueMap

1 个答案:

答案 0 :(得分:0)

您没有名为ret内容的文件,因此FileUtils::getInstance()->getValueMapFromFile无法帮助您。如果您使用的是XML,则可以尝试FileUtils::getInstance()->getValueMapFromData。 你真正需要的是一个JSON解析器,我喜欢使用rapidjson
Cocos2dx与rapidjson捆绑在一起。

#define RAPIDJSON_HAS_STDSTRING 1
#include "json/document.h"

using namespace rapidjsonl
Document doc;
doc.Parse(ret.c_str());

/* if ret is as follows
{
    "hello": "world",
    "t": true ,
    "f": false,
    "n": null,
    "i": 123,
    "pi": 3.1416,
    "a": [1, 2, 3, 4]
}
*/
assert(document.HasMember("hello"));
assert(document["hello"].IsString());
log("hello = %s\n", document["hello"].GetString());