C ++ Poco-如何迭代一个JSON数组?

时间:2018-09-05 09:33:20

标签: c++ arrays poco-libraries

我已经看到一些examples如何迭代思想嵌套的JSON对象,例如:

 "{ \"test\" : { \"property\" : \"value\" } }"

但是现在我需要遍历一个JSON数组(下面的 children array):

"{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }"

我该如何实现?

我在任何地方都看不到示例,甚至在POCO文档中也看不到。

我在下面有此示例,但无法获取子代的数组。

Poco::Dynamic::Var test = object->get("children");

Poco::JSON::Array::Ptr subObject = test.extract<Poco::JSON::Array::Ptr>();

for (it = subObject->begin(); it != subObject->end(); it++) // how to iterate here?
{
    std::cout << "my children:" << it->first << "\n";
}

1 个答案:

答案 0 :(得分:2)

begin数组中的方法endsubObject返回JSON::Array::ConstIterator,其定义如下

typedef std::vector<Dynamic::Var>::const_iterator ConstIterator;

所以你可以写

for (Poco::JSON::Array::ConstIterator it= subObject->begin(); it != subObject->end(); ++it)
{
  // do sth here
}

,当您知道it指向Dynamic::Var时,可以使用convertextract方法获取字符串对象:

for (Poco::JSON::Array::ConstIterator it = subObject->begin(); it != subObject->end(); ++it)
{
    std::cout << "my children:" << it->convert<std::string>() << "\n";
}