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

waa*_*919 3 c++ arrays poco-libraries

我看过一些如何迭代思想嵌套对象的示例JSON,例如:

 "{ \"test\" : { \"property\" : \"value\" } }"
Run Code Online (Sandbox Code Playgroud)

但现在我需要迭代一个JSON数组(下面的子数组 array):

"{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }"
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?

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

我有下面的示例,但无法获取Children数组。

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";
}
Run Code Online (Sandbox Code Playgroud)

raf*_*x07 5

数组返回的方法begin和定义如下endsubObjectJSON::Array::ConstIterator

typedef std::vector<Dynamic::Var>::const_iterator ConstIterator;
Run Code Online (Sandbox Code Playgroud)

所以你可以写

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

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

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