Проверка схемы и данных

Валидатор JSON SchemaОт неверного значения к ограничению

Начните с примера. Проверка только схемы не читает данные; проверка экземпляра использует оба документа.

Валидатор JSON Schema

JSON Schema

Данные JSON

Данные и ссылки обрабатываются в этом браузере: ничего не отправляется на проверку и удалённые ссылки не загружаются.

Параметры проверки

Выключено: format является аннотацией. Включено: ajv-formats проверяет известные форматы; неизвестные блокируют компиляцию.

Локальные ссылки

До десяти JSON-файлов, каждый с уникальным абсолютным $id без # в корне. Имена файлов не разрешают ссылки.

Файлы ссылок не добавлены.

    Всё готово к ручной проверке.

    Валидатор JSON Schema обнаруживает строку вместо ожидаемого целого числа, отсутствующий обязательный ключ и лишнее свойство. Корректный синтаксис JSON ещё не означает соблюдения контракта API. Сравните полученный ответ с правилами, прежде чем менять принимающий его код.

    Проверка JSON по схеме различает отсутствие ключа и значение null. Она не вставляет default и не превращает строку с цифрами в число: вывод относится к тем данным, которые вы действительно передали.

    Зачем нужен Валидатор JSON Schema?

    Связать значение с ограничением

    Валидатор JSON Schema показывает путь экземпляра рядом с путём схемы. /users/0/age указывает на неверный тип значения, а required может указывать на родительский объект. Тогда имя отсутствующего свойства нужно искать в параметрах ошибки.

    Выделенный узел данных соединён с соответствующим правилом в другом дереве.

    Не объединять определения вручную

    Импортируйте зависимости, сохранив их отдельными файлами. Каждый файл регистрируется по абсолютному $id. Относительные ссылки разрешаются от базового URI; имя файла служит только подписью и не подменяет идентификатор.

    Основная схема соединена с двумя локальными файлами ссылок и общим результатом проверки.

    Подготовить условия проверки

    01

    Согласовать объявление и draft

    По умолчанию выбран 2020-12. Противоречащий ему $schema вызывает ошибку. Для кортежей draft-07 использует массив items, а 2020-12 — prefixItems. Переключение версии не преобразует существующие правила.

    02

    Проверить схему без экземпляра

    Отдельная проверка разбирает, проверяет по метасхеме и компилирует корень и все импортированные зависимости. Поле данных не читается. Каждому файлу ссылок нужен уникальный абсолютный $id без фрагмента; отсутствующая цель останавливает компиляцию.

    03

    Обновить вывод после правок

    Ctrl/Cmd+Enter запускает ручную проверку. Изменение данных, параметров или ссылок отменяет старую задачу и блокирует экспорт. Пример, очистка и удаление ссылки требуют предпросмотра и применения; отмена изменения восстанавливает прежние данные и отчёт.

    Из чего складывается результат

    Три явно выбранных диалекта

    Валидатор JSON Schema использует Ajv для draft-07, 2019-09 и 2020-12. Условия и комбинации трактуются по выбранной версии. Неизвестные ключевые слова вызывают ошибку компиляции, чтобы опечатка не превратила ограничение в незаметно пропущенную проверку.

    Форматы включаются отдельно

    Валидация JSON Schema изначально не применяет format. Включение активирует проверки ajv-formats для email, date-time, URI, UUID и других форматов; неизвестное имя блокирует компиляцию. Независимое правило pattern действует при обоих положениях переключателя.

    Отделить ошибку схемы от нарушения данных

    Проверка JSON Schema онлайн различает синтаксис, метасхему, неразрешённые ссылки и нарушения экземпляра. Экспортировать можно только завершённый отчёт. Интерфейс переведён, а технические пояснения движка сохранены на английском языке.

    Рассматривать пути вместе с параметрами

    Движок завершает проверку раньше, когда это возможно, но комбинация может вернуть несколько ошибок ветвей. Сопоставляйте instancePath, schemaPath, keyword и параметры. Список раскрывается по 50 записей; файл JSON содержит весь принятый отчёт.

    Ограничения, влияющие на вывод

    Адрес ссылки не означает загрузку
    Разрешаются внутренние ссылки и импортированные схемы. HTTP-ресурсы не запрашиваются. Корень файла ссылки должен иметь абсолютный $id без #; повторяющиеся ID отклоняются. Совпадающее имя файла не заменяет идентификатор.
    Данные не исправляются автоматически
    Преобразование типов, вставка default и удаление лишних свойств отключены. Во всех документах запрещены JSON5, комментарии, завершающие запятые и повторяющиеся ключи, чтобы проверка не выполнялась над незаметно перезаписанными значениями.
    Произвольные расширения не поддерживаются
    Доступны только три указанные версии. Пользовательские метасхемы, $vocabulary, $async, $data и неизвестные ключевые слова не поддерживаются. Передавайте совместимый фрагмент схемы, а не документ OpenAPI целиком; это не аудит спецификации API. strictSchema в Ajv также может отклонить игнорируемые правила, например then без if. Точные ключи __proto__ в картах properties, patternProperties и dependencies не поддерживаются из-за ограничения движка; одноимённые ключи в данных не запрещены.
    Нет арифметики произвольной точности
    Отклоняются неконечные числа, математические целые вне безопасного диапазона и десятичные токены, меняющиеся после преобразования через Number. Записи 1.0 и 1e0 допустимы. Обычные дроби всё равно используют IEEE 754; multipleOf может проявлять границы плавающей точки.
    Размер и время ограничены
    Каждый документ допускает 500 000 символов, 50 000 узлов и глубину 40. Вместе — 1 000 000 символов и десять файлов ссылок. Через пять секунд worker завершается; это означает незавершённую проверку, а не корректность или некорректность данных.
    Отчёт не перечисляет все нарушения
    allErrors отключён. Исправьте указанную проблему и выполните проверку снова. Отчёт ограничен 1 000 ошибками и 500 000 символами; превышение отменяет весь отчёт. Успех одного примера не доказывает соответствие всех будущих сообщений.

    Валидатор JSON Schema: частые вопросы

    Чем проверка по схеме отличается от проверки синтаксиса?

    Проверка синтаксиса определяет, можно ли прочитать текст как JSON. Схема дополнительно требует нужных типов, обязательных свойств и других ограничений. Поэтому корректная JSON-строка может нарушить правило, ожидающее целое число.

    Как проверяются массивы и значение null?

    Они проверяются по переданным правилам. Для массива задайте type: array и items; для допуска null включите его в разрешённые типы. required требует присутствия ключа, но сам по себе не запрещает значение null.

    Какой draft можно выбрать?

    Доступны draft-07, 2019-09 и 2020-12; начальный выбор — 2020-12. Объявление $schema должно совпадать с выбором. Старые и пользовательские диалекты не принимаются как будто они автоматически совместимы.

    Как различаются allOf, anyOf и oneOf?

    allOf требует выполнения всех ветвей, anyOf — хотя бы одной, oneOf — ровно одной. Если условия двух ветвей oneOf перекрываются и обе подходят, проверка не пройдёт. Посмотрите ошибки ветвей вместе с итоговой ошибкой комбинации.

    Как подключить подсхему через $ref?

    Можно сослаться на определение внутри документа или импортировать отдельный файл с подходящим абсолютным $id. Относительная ссылка разрешается от базового URI. Сетевых загрузок нет; неизвестная цель приводит к ошибке компиляции.

    Есть случай, который стоит проверить?

    Проверьте и отрицательный пример

    Валидатор JSON Schema помогает сравнить принятые и отклонённые примеры. Сохраните выбранный draft и настройку format рядом с отчётом, чтобы объяснять различия между средами.