Как я могу анализировать массивы json с повышением С++ - программирование
Подтвердить что ты не робот

Как я могу анализировать массивы json с повышением С++

Привет, у меня есть файл, содержащий некоторый json, который выглядит так:

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

Кто-нибудь знает, как анализировать значения двойного массива с помощью С++ и boost ptree?

спасибо заранее!

4b9b3361

Ответ 1

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

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

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

... теперь, потому что кажется, что у вас несколько ключевых слов "frame" в словаре верхнего уровня, вы должны перебирать их:

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;
}

Я не тестировал код, но идея будет работать: -)