从Json字符串(或文件)中,我想在不事先知道密钥的情况下收集键/值对。 让我们说我有这个Json:
{ "a":"1","b":"2","c":"3" }
我想收集所有关键字符串" a" ," b" ," c" ," d"和他们各自的价值观。 BTW:我在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*
}
但是我坚持这一点。
答案 0 :(得分:5)
我刚刚发现 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);
}
}