我的json对象中有一个列表,我想迭代列表的元素 我看到了以下帖子Iterating through objects in JsonCpp,但这对我不起作用
我的json对象:
{
"name": ["str1",str2" ... ]
}
我拥有且无法使用的代码
Json::Value names= (*json)["name"];
for( Json::ValueIterator itr = names.begin() ; itr != names.end() ; itr++ ) {
string name = *itr.asString();}
我收到以下错误
cannot convert from 'Json::Value' to 'std::basic_string<_Elem,_Traits,_Ax>
我确信元素是字符串,因为调用string name = names= (*json)["name"][0].asString()
正在工作
答案 0 :(得分:8)
在c ++ 11中,它现在更简单了:
for (auto itr : json["name"]) {
string name = itr.asString();
// ...
}
答案 1 :(得分:7)
我不知道如何从代码中收到cannot convert
错误,但我确实认为我发现了问题。
Json::ValueIterator
是迭代器;换句话说,类似于指针,需要取消引用它以访问它指向的值。
itr.asString()
尝试访问迭代器的asString
方法,而迭代器没有asString
方法。*itr.asString()
尝试访问迭代器的asString
方法,然后取消引用结果(因为操作顺序; .
的优先级高于*
),并且迭代器没有asString
方法。(*itr).asString()
(使用括号澄清优先顺序)或itr->asString()
(使用->
运算符,首选方法)应该有效。