Как я могу проанализировать массивы JSON с помощью C ++ Boost?

У меня есть файл, содержащий некоторый контент JSON, который выглядит следующим образом:

{
"frame":
{
"id": "0",
"points":
[
[ "0.883", "0.553", "0" ],
[ "0.441", "0.889", "0" ],
]
},
"frame":
...
}

Как мне проанализировать значения двойного массива, используя C ++ и Boost ptree?

14

Решение

Используй итераторы, Люк.

Сначала вы должны проанализировать файл:

boost::property_tree::ptree doc;
boost::property_tree::read_json("input_file.json", doc);

… теперь, поскольку кажется, что в словаре верхнего уровня есть несколько «рамочных» ключей, вы должны их перебрать:

BOOST_FOREACH (boost::property_tree::ptree::value_type& framePair, doc) {
// Now framePair.first == "frame" and framePair.second is the subtree frame dictionary
}

Перебор строк и столбцов одинаков:

BOOST_FOREACH (boost::property_tree::ptree::value_type& rowPair, frame.get_child("points")) {
// rowPair.first == ""BOOST_FOREACH (boost::property_tree::ptree::value_type& itemPair, rowPair.second) {
cout << itemPair.second.get_value<std::string>() << " ";
}
cout << endl;
}

Я не тестировал код, но идея сработает 🙂

22

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]