2017-06-08 12 views
2

を持つオブジェクト、jsonArrは、以下のようなもので、言う:反復は、私はJSONオブジェクトの配列を持っているjsoncpp

jsoncppを使用して
[ 
    { "attr1" : "somevalue", 
    "attr2" : "someothervalue" 
    }, 
    { "attr1" : "yetanothervalue", 
    "attr2" : "andsoon" 
    }, 
    ... 
] 

、私は、配列を反復処理しているかどうかを確認しようとしています各オブジェクトには"attr1"というメンバがあります。この場合、対応する値をベクトルvaluesに保存します。

私は

Json::Value root; 
Json::Reader reader; 
Json::FastWriter fastWriter; 
reader.parse(jsonArr, root); 

std::vector<std::string> values; 

for (Json::Value::iterator it=root.begin(); it!=root.end(); ++it) { 
    if (it->isMember(std::string("attr1"))) { 
    values.push_back(fastWriter.write((*it)["uuid"])); 
    } 
} 

のようなものを試してみましたが、エラーメッセージ

libc++abi.dylib: terminating with uncaught exception of type Json::LogicError: in Json::Value::find(key, end, found): requires objectValue or nullValue 

答えて

3

かなり自明取得維持している:

for (Json::Value::ArrayIndex i = 0; i != root.size(); i++) 
    if (root[i].isMember("attr1")) 
     values.push_back(root[i]["attr1"].asString()); 
関連する問題