C ++ Poco - Как перебрать мысли массив JSON? - PullRequest
0 голосов
/ 05 сентября 2018

Я видел примеров как перебирать вложенные мысли 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";
}

1 Ответ

0 голосов
/ 05 сентября 2018

Методы begin и end вашего subObject массива возвращают 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, вы можете использовать метод convert или extract для получения строкового объекта:

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