0
内の各オブジェクトのすべてのキーと値のペアは、ここに私のJSONオブジェクトです:読む配列
{
"resources":[
{
"Foo":0,
"Bar":"",
"Fiz":1
},
{
"Foo":2,
"Bar":"",
"Fiz":3
}
]
}
上記のJSON配列resources
が正しくarray
として検出されます。配列の各オブジェクトを繰り返し処理し、map
にkey:value
のペアを追加します。
オブジェクトの量(ここでは2)を正しく検出します。 しかし、オブジェクトメンバーを反復処理する方法は?配列の各要素はオブジェクトではないという主張があります。私はなぜなのか理解していない!あなたはstring
としてすべての値を扱っているが、あなたのJSONにInt
型の値を持つキーがある
if (jsonvalue->IsArray()){ // that jsonvalue is my "resources" array
for (rapidjson::SizeType i = 0; i < jsonvalue->Size(); i++){
const rapidjson::Value& c = jsonvalue[i];
// Is no object! assertion triggers in next call.
for (rapidjson::Value::ConstMemberIterator iter = c.MemberBegin(); iter != c.MemberEnd(); ++iter){
printf("%s\t", iter->name.GetString());
printf("%s\t", iter->value.GetString());
}
}
}