не удается получить дерево свойств для восстановления записей после анализа json

У меня есть пример записи 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 ....`

4

Решение

Потому что Boost property_tree использует точку для разделения разных объектов. Когда вы запрашиваете "post.source" get функция ищет объект post с имущество source,

1

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

Поскольку имя свойства содержит точку, вы должны использовать другой разделитель, поэтому в вашем случае это будет:

cout << pt.get(ptree::path_type("post.source", '/'), "");

Раздел документации Boost, объясняющий это.

7