Json, XML, Ini format parser

Raiden LuiKang
Raiden LuiKang

В С++ добавляется столько много вещей,  это приятно. 

Но в другой сторону, это печально, что С++ нет стаднтрный инструмент для работы с JSON, XML, INI   форматом, который  используется  почти для все программы с сетевом содействием и других местах.  Да, здесь очень много сторонных библиотеках, но у всех есть свои плюси и минусы и главное не в духе современный язык С++.

 

Недавно читал,  С++20 добавили std::format  -- очень круто!  Python стил форматирование, не-такой громоздкой, быстрый как printf,  легко расширяется с пользовательский тип данных,  возмнож  возвращает std::string,  или возможно  записывает результат на   char []  массив.

 

Вот таким образом, не ужелье нельзя добавить  JSON, XML  формат парсеры и контейнеры,  который и легковесный и быстрый и удобный в использование?

 

5
рейтинг
2 комментария
yndx-antoshkka

Можно и добавить. Нужен работающий прототип.

yndx-antoshkka
Raiden LuiKang

Здесь несколько   кандидат пришло в мою голову ( из http://json.org/ ) .


1) nlohman json  https://github.com/nlohmann/json

2)  rapidjson  https://github.com/Tencent/rapidjson

3)  jsoncpp https://github.com/open-source-parsers/jsoncpp


Но у них каждого есть минусы, например 
 (1) nlohman громоздкий - более 15 тысяч строк исходный код и медленный, но использует более современный C++.

(2)  rapidjson  -- быстрый , но всегда придётся тащить за сабой аллокатор - очень не удобный.

(3) jsoncpp -- стабильный,  но требует много ресурс.


Было бы здорово если найти как нибудь средный баланс между  быстрота и удобности, и добавить эту.


И я удивляюсь, а почему в boost  ( boost.org )  библиотекам никто не предлагает добавить json или XML формат парсери?   

я в курсе там есть property_tree - - но это далеко от стандарта, нет там чисел, везде строка, нет массив, и очень медленный,  еще бросает исключение когда парсирует, еще требует basic_stream , нет способ парсит  обычная строка ( может я ошибаюсь).

Raiden LuiKang
Обновлено 
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения