Итерирование по JSON ptree в boost

0

Мне нужна помощь при повторном запуске JSON ptree. Здесь структура.

{"drives": [{"busy": false, "eof": false, "density": 88 }]}

Я хочу сделать, чтобы напечатать ключ и значение, например. busy = false. Я пробовал код ниже, но нет выхода.

BOOST_FOREACH(ptree::value_type &v, pt.get_child("drives"))
{
    cout << v.first << endl; // does not work
    cout << v.second.data() << endl; // does not work
    cout << v.second.get<string>("busy"); // works
}

Итак, как мне распечатать ключ?

Заранее благодарю за любую помощь.

  • 0
    Извините, у меня нет конструктивного комментария, но после использования property_tree с JSON и XML я действительно думаю, что вам лучше использовать среду, написанную для чтения JSON (или XML), а не среду, которая была написана для того, чтобы обобщать чтение из JSON / XML. и ini.
Теги:
boost

1 ответ

0

Я прошел через старый код, и я нашел способ

BOOST_FOREACH(ptree::value_type &v, pt.get_child("drives"))
{
   for(auto iter = v.second.begin(); iter!= v.second.end(); ++iter)
   {
       std::cout << iter->first << " : " << iter->second.get_value<std::string>() << std::endl;
   }

}

Вам нужно только перебирать "диски", если у вас несколько "дисков", а в вашем примере json у вас его нет.

В коде вы пытаетесь напечатать v.first и v.data(), но эти два не содержат данные, которые, по их мнению, они хранят.

v.первый предполагалось сохранить ключевое имя "KeyName": {"занято": false, "eof": false, "плотность": 88}

который не существует, потому что это значение является частью массива.

v.data() (Если я не ошибаюсь) содержит ключ: значение, которое является внутренним представлением и не может быть напечатано таким образом.

Я действительно думаю, что вы должны попробовать использовать другую структуру для JSON.

  • 0
    Спасибо за ваш вклад. Любые идеи, какие рамки лучше. Я думал об использовании jsoncpp.
  • 0
    Извините, у меня нет входных данных для фреймворков JSON, когда я использовал property_tree для чтения JSON, в Ubuntu возникла ошибка, вместо перехода на фреймворк я попытался использовать property_tree с XML ... и позже я перешел на rapid_xml (потому что я уже у меня было слишком много XML-файлов, чтобы вернуться в JSON), в нижней части json.org у вас есть другие альтернативы. но AFAIK jsoncpp - хороший надежный.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню