Парсер json

Андрей Урусов
Андрей Урусов

На рынке много неплохих библиотек, но хочется из коробки со всеми плюшками. jsoncpp довольно удобный, но с его помощью не получается валидировать. В бусте парсер сериализует только в propertytree.

9
рейтинг
11 комментариев
yndx-antoshkka
Мне нравится jsoncpp, можно взять его за основу. Но придется исправить множество вещей. Вот что сразу бросилось в глаза:
* никаких сырых указателей, вместо них - ссылки и std::string_view
* нужно поддержать паттерн visitor
* нужно поддержать rvalue references и std::initializer_list


yndx-antoshkka
pavard
yndx-antoshkka, почему не бинарный джейсон, ксмель, протобуф? ну и аргумент "хочется" не самый мощный.
pavard
yndx-antoshkka
pavard, надо с чего-то начинать :) JSON весьма популярен, прост и не так ужасен как XML
yndx-antoshkka
pavard
yndx-antoshkka, почему надо начинать это втягивать? стихия джейсона - веб, плюсы - для веба редко используются. более того вне веба ( ну и ряда бд, которые упрощают жизнь веб-разработчикам, поддержав джейсон ) джейсон вообще нигде не встречается.
тобишь к чему это метафорой объясню - если ты одер розовые очки, это не значит что весь мир стал розовым - это значит твое восприятие такое.
pavard
yndx-antoshkka
pavard, json можно использовать везде где используют xml (например для конфигурационных файлов, отладки, описания интерфейсов). При этом json более компактен и прост в чтении.
yndx-antoshkka
pavelandreevith
Мне кажется лучшим кандидатом вот этот:
github.com/nlohmann/json

Вся библиотека сделана "по канонам" С++. Утверждается, что там низкий оверхед. Огромное покрытие тестами, проверка на утечки памяти, интуитивный и очень удобный синтаксис и отличная документация. Бонусом json patch.
pavelandreevith
yndx-antoshkka
pavelandreevith, спасибо! Посмотрю в скором времени.
yndx-antoshkka
Андрей Урусов
pavelandreevith, спасибо, выглядит инересным
Андрей Урусов
earlnsk
yndx-antoshkka, в описании nlohmann/json есть ссылка тесты производительности json библиотек для C++: github.com/miloyip/nativejson-benchmark#parsing-time

Оказывается там уже порядка 40 библиотек.
earlnsk
Victor Dyachenko
Вот это погибче и производительнее, чем jsonccp будет: rapidjson.org
Victor Dyachenko
Anatoly Scheglov
Дождитесь статической рефлексии (интроспекции).
Anatoly Scheglov
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).