У меня есть пример записи json, которую я проанализировал с помощью boost json parser и сохранил ее, чтобы увеличить дерево свойств для получения всех пар ключ-значение. По следующему коду я могу получить первый атрибут дерева, но как я могу получить значение второго атрибута? когда я пытаюсь получить его, он показывает мне исключение: «Нет такого узла».
если я перебираю дерево, то оно показывает мне все ключи. Я не понимаю, что с ним не так.
ссылка: http://www.boost.org/doc/libs/1_52_0/doc/html/boost_propertytree/accessing.html
json string := {"type":"net.aggregate","post.source":"1209010340", "val":1000}
Код:
boost::property_tree::ptree pt;
read_json("jSon string object", pt);
cout << pt.get("type", ""); // working
cout << pt.get("post.source", "") // showing error ....`
Потому что Boost property_tree
использует точку для разделения разных объектов. Когда вы запрашиваете "post.source"
get
функция ищет объект post
с имущество source
,
Поскольку имя свойства содержит точку, вы должны использовать другой разделитель, поэтому в вашем случае это будет:
cout << pt.get(ptree::path_type("post.source", '/'), "");