Я бы хотел write_json
вывести массив верхнего уровня, что-то с эффектом:
[{...},{...},{...},...,{...}]
Но когда я передаю список write_json
, он преобразуется в JSON, полный пустых ключей.
{"":{...},"":{...},"":{...},..."":{...}}
С помощью add_child
на самом деле уважает массив и дает мне самое близкое из:
{"Some Key":[{...},{...},{...},...,{...}]}
Но это все еще не то, что я хочу.
Любая идея, как сделать этот массив верхнего уровня?
У Boost нет библиотеки JSON (и нет библиотеки XML). Он имеет библиотеку дерева свойств (которая включает в себя JSON-совместимое представление).
Ограничения, с которыми вы столкнулись, совершенно четко задокументированы: http://www.boost.org/doc/libs/1_62_0/doc/html/property_tree/parsers.html#property_tree.parsers.json_parser
Набор данных дерева свойств не типизирован и не поддерживает массивы как таковые. Таким образом, используется следующее отображение дерева свойств JSON:
- Объекты JSON отображаются на узлы. Каждое свойство является дочерним узлом.
- Массивы JSON сопоставляются с узлами. Каждый элемент является дочерним узлом с пустым именем. Если узел имеет как именованные, так и безымянные дочерние узлы, он не может быть сопоставлен с представлением JSON.
- Значения JSON отображаются на узлы, содержащие значение. Однако вся информация о типах теряется; числа, а также литералы «null», «true» и «false» просто отображаются в их строковую форму.
- Узлы дерева свойств, содержащие как дочерние узлы, так и данные, не могут быть отображены.
- JSON туда и обратно, за исключением потери информации о типе.
Далее приводится пример ТОЧНО, с чем вы столкнулись.
Других решений пока нет …