MinJSON Документация

Высокопроизводительная JSON-библиотека для C++20 с поддержкой рефлексии

Обзор библиотеки

MinJSON - это легковесная, высокопроизводительная библиотека для работы с JSON в C++20. Она сочетает простоту использования с современными возможностями языка.

Ключевые особенности:

  • Парсинг и сериализация JSON
  • Доступ к данным через path-выражения
  • Поддержка рефлексии для пользовательских типов
  • Исключения или error коды на выбор
  • Минималистичный заголовочный файл

Высокая производительность

Оптимизированные алгоритмы парсинга и минимальные накладные расходы

Современный C++20

Использование концептов, std::variant и других возможностей C++20

Простота интеграции

Единственный заголовочный файл без внешних зависимостей

Парсинг JSON

Для парсинга JSON-строк используйте метод parse(). Он возвращает Result<Value> - вариант, содержащий либо значение, либо ошибку.

parse()

public method
Result<Value> parse(std::string_view input) noexcept

Парсит JSON из строки. Возвращает Value при успехе или Error при ошибке.

Доступ к данным

MinJSON предоставляет несколько способов доступа к данным в JSON-структуре:

Path-выражения

Доступ к вложенным данным с помощью строки пути:

  • "user.name" - доступ к свойству
  • "items[0].id" - доступ к элементу массива
  • "data.stats[1].value" - комбинированный доступ

Типизированный доступ

Получение значений с автоматическим преобразованием типов:

  • get<int>(value, "age")
  • get<std::string>(value, "name")
  • get<std::vector<double>>(value, "prices")

Методы доступа

get()
template method
template <MinJSONValueType T>
T get(const Value& root, std::string_view path, const T& default_val = {}) const

Получает значение по указанному пути. Возвращает default_val если путь не найден.

T Тип возвращаемого значения
get_checked()
template method
template <MinJSONValueType T>
Result<T> get_checked(const Value& root, std::string_view path) const

Получает значение по указанному пути. Возвращает Result<T> с ошибкой если путь не найден или тип не совпадает.