Как выбрать значение из json?

Рейтинг: 0Ответов: 1Опубликовано: 09.03.2015

Вот json:

{
    "ts": 1827908701,
    "updates": [
        [4, 30623409, 17, 81282347579, 1425823449632, " ... ", "tfs"],
        [80, 1, 0],
        [7, 81282347579, 30652308]
    ]
}

Как мне взять значение, например, 4, из updates с помощью библиотеки boost?

Ответы

▲ 1Принят

Как я понимаю, Boost.PropertyTree не умеет в индексирование массивов. Поэтому надо их перебирать:

std::stringstream ss;
ss << "{\"ts\":1827908701,\"updates\":[[4,30623409,17,812823,14258234,\"tfs\"],[80,1,0],[7,81282347579,30652308]]}";
boost::property_tree::ptree pt;
boost::property_tree::read_json(ss, pt);
std::cout << pt.get<int>("ts") << std::endl;

BOOST_FOREACH(auto &v, pt.get_child("updates"))
{
    BOOST_FOREACH(auto &w, v.second)
    {
        std::cout << w.second.data() << std::endl; // тут мы вытащим и 4, и 30623409 и "tfs"    
    }
}