我想从一个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/