Boost PropertyTree: как читать массив json?

Итак, имея такой json:

{
  "config": {
    "name": "myconfig",
    "servecies": {
      "module": [
        "file",
        "Admin",
        "HR"
      ],
      "notModule": "MyNotModule"
    }
  }
}

Как разобрать массив module на multimap<string,string>? и можно ли узнать, является ли module массивом, а не модулем?


person Rella    schedule 11.07.2011    source источник
comment
-1: Вы задали этот вопрос вчера, но вам, видимо, не понравился ответ. Boost.PropertyTree не является общим парсером JSON; вы не можете загрузить какой-либо файл JSON и построить из него Boost.PropertyTree. Если вам нужен парсер JSON, я бы посоветовал его найти.   -  person Nicol Bolas    schedule 12.07.2011


Ответы (2)


Используйте анализатор JSON. На самом деле в C++ нет ничего, что сделало бы всю работу за вас, вы должны использовать внешний парсер (или развернуть свой собственный) и интерпретировать события по мере их прохождения.

У меня есть хороший опыт работы с jsoncpp, и есть несколько других, перечисленных на json.org в разделе C++.

person Andrew Rasmussen    schedule 11.07.2011
comment
В Boost PropertyTree есть парсер JSON. Это не общий вопрос С++ о Boost PropertyTree. - person Rella; 11.07.2011

Дерево свойств boost включает анализатор JSON.

boost::property_tree::json_parser::read_json("file.json", property_tree_root);

парсит file.json и кладет корень в property_tree_root.

Дочерние элементы в дереве свойств будут иметь имена, за исключением тех, которые являются элементами массива.

По сути, это то же самое, что и: Разбирать элементы из массива в файле json. с помощью ускорения

person Brian    schedule 19.11.2018