C++ Poco - 如何遍历 JSON 数组?
C++ Poco - How to iterate thought a JSON array?
我看过一些 如何迭代思想嵌套 JSON
对象,例如:
"{ \"test\" : { \"property\" : \"value\" } }"
但现在我需要遍历 JSON
数组(下面的 children array
):
"{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }"
我怎样才能做到这一点?
我在任何地方都看不到示例,甚至在 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";
}
您的 subObject
数组 return JSON::Array::ConstIterator
的方法 begin
和 end
定义如下
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
时,你可以使用 convert
或 extract
方法来获取字符串对象:
for (Poco::JSON::Array::ConstIterator it = subObject->begin(); it != subObject->end(); ++it)
{
std::cout << "my children:" << it->convert<std::string>() << "\n";
}
我看过一些 JSON
对象,例如:
"{ \"test\" : { \"property\" : \"value\" } }"
但现在我需要遍历 JSON
数组(下面的 children array
):
"{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }"
我怎样才能做到这一点?
我在任何地方都看不到示例,甚至在 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";
}
您的 subObject
数组 return JSON::Array::ConstIterator
的方法 begin
和 end
定义如下
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
时,你可以使用 convert
或 extract
方法来获取字符串对象:
for (Poco::JSON::Array::ConstIterator it = subObject->begin(); it != subObject->end(); ++it)
{
std::cout << "my children:" << it->convert<std::string>() << "\n";
}