Высокопроизводительная JSON-библиотека для C++20 с поддержкой рефлексии
MinJSON - это легковесная, высокопроизводительная библиотека для работы с JSON в C++20. Она сочетает простоту использования с современными возможностями языка.
Ключевые особенности:
Оптимизированные алгоритмы парсинга и минимальные накладные расходы
Использование концептов, std::variant и других возможностей C++20
Единственный заголовочный файл без внешних зависимостей
Для парсинга JSON-строк используйте метод parse()
. Он возвращает
Result<Value>
- вариант, содержащий либо значение, либо ошибку.
Result<Value> parse(std::string_view input) noexcept
Парсит JSON из строки. Возвращает Value
при успехе или Error
при ошибке.
MinJSON предоставляет несколько способов доступа к данным в JSON-структуре:
Доступ к вложенным данным с помощью строки пути:
"user.name"
- доступ к свойству"items[0].id"
- доступ к элементу массива"data.stats[1].value"
- комбинированный доступПолучение значений с автоматическим преобразованием типов:
get<int>(value, "age")
get<std::string>(value, "name")
get<std::vector<double>>(value, "prices")
template <MinJSONValueType T>
T get(const Value& root, std::string_view path, const T& default_val = {}) const
Получает значение по указанному пути. Возвращает default_val если путь не найден.
template <MinJSONValueType T>
Result<T> get_checked(const Value& root, std::string_view path) const
Получает значение по указанному пути. Возвращает Result<T>
с ошибкой если путь не найден или тип не совпадает.