我想从一个Json字符串(或文件)中收集键/值对,而无需事先知道键。
假设我有这个Json:

{ "a":"1","b":"2","c":"3" }


我想收集所有键字符串“ a”,“ b”,“ c”,“ d”及其各自的值。
顺便说一句:我在Cocos2dX 3.3中使用了Rapidjson集成。
任何想法?

我现在正在使用的是:

rapidjson::Document JSON;

//..... collecting the JSON .... then

for (rapidjson::Value::MemberIterator M=JSON.MemberonBegin(); M!=JSON.MemberonEnd(); M++)
{
    //..... I have access to M->name and M->value here
    //..... but I don't know how to convert them to std::string or const char*
}


但是我坚持下去。

最佳答案

我刚刚发现了Rapidjson :: Value :: MemberIterator中有函数。因此,这是一个从Json文档枚举密钥/对的示例。本示例仅记录根密钥。您将需要额外的工作来检索子键

const char *jsonbuf = "{\"a\":\"1\",\"b\":\"2\",\"c\":\"3\"}";

rapidjson::Document                 JSON;
rapidjson::Value::MemberIterator    M;
const char                          *key,*value;

JSON.Parse<0>(jsonbuf);

if (JSON.HasParseError())
{
    CCLOG("Json has errors!!!");
    return;
}

for (M=JSON.MemberonBegin(); M!=JSON.MemberonEnd(); M++)
{
    key   = M->name.GetString();
    value = M->value.GetString();

    if (key!=NULL && value!=NULL)
    {
        CCLOG("%s = %s", key,value);
    }
}

关于cocos2d-x - RapidJson:如何从JSON获取所有Key_name? (cocos2dx),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27862512/

10-10 16:00