Мне нужна помощь при повторном запуске 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
}
Итак, как мне распечатать ключ?
Заранее благодарю за любую помощь.
Я прошел через старый код, и я нашел способ
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.