我想使用以下代码在游戏中使用网络服务:
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
?
答案 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());