Валидатор JSON Schema

Вставьте схему и документ, выберите draft, и валидатор проверит документ по каждому ключевому слову, которое использует ваша схема, type, required, enum, oneOf, $ref, if/then/else, пользовательский format, сообщая о каждом нарушении с указателем в стиле JSONPath на точное проблемное место.

Как валидировать по схеме

  1. 1

    Вставьте схему

    JSON Schema draft 04, 07 или 2020-12. Ключевое слово `$schema` (если есть) автоматически выбирает draft.

  2. 2

    Вставьте документ

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

  3. 3

    Валидируйте

    О каждом нарушении сообщается с указателем JSON (`/user/email`) и неудавшимся ключевым словом (`format`, `required` и т. д.).

  4. 4

    Исправьте и перепроверьте

    Редактируйте любую сторону, и статус обновляется в реальном времени.

Поддерживаемые ключевые слова

Ядро: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Композиция: allOf, anyOf, oneOf, not.

Аппликаторы: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Условные: if, then, else, dependentSchemas.

Ссылки: $ref, $defs, $id, $anchor.

Форматы (с валидацией при включении): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Вывод ошибок

FAIL  /user/email        format            "not-an-email" is not a valid "email"
FAIL  /user/age          minimum           -3 is less than the minimum 0
FAIL  /orders/0/total    type              "42" is not of type "number"
FAIL  /                  required          missing required property "shippingAddress"

Каждая ошибка включает путь и неудавшееся ключевое слово, что позволяет быстро найти ее в вашем редакторе.

Различия draft, которые кусаются

Ключевое слово Draft 04 Draft 07 Draft 2020-12
id против $id id $id $id
exclusiveMaximum как bool Да Число Число
Массивный синтаксис items items items prefixItems
$ref допускает соседей Нет Нет Да

Задайте правильный draft; валидация схемы draft-04 как 2020-12 неверно истолкует id и некоторые другие тонкости.

Типичные рабочие процессы

  • Тестирование контракта API: перед деплоем прогоните сгенерированную/обновленную схему OpenAPI по реальным примерам ответов.
  • Усиление конфигурации: валидируйте каждый YAML/JSON-конфиг в CI по схеме перед слиянием.
  • Прием данных: отклоняйте полезные нагрузки, не соответствующие ожидаемой форме, заранее, с понятным сообщением об ошибке.

Частые ошибки

  • Забывание принудительной проверки format. По умолчанию большинство валидаторов трактуют неизвестные форматы как только аннотацию. Включите строгую проверку формата, чтобы действительно отклонять некорректные email и даты.
  • Чрезмерное использование oneOf. Если две ветви oneOf пересекаются, документ не пройдет (он должен совпадать ровно с одной). Используйте anyOf или паттерны дискриминатора.
  • Тесные схемы с additionalProperties: false. Добавление нового опционального поля становится ломающим изменением. Опускайте это, если только вам действительно не нужен закрытый объект.

Часто задаваемые вопросы

Да. Draft 2020-12, 07 и 04, все поддерживаются. Валидатор читает ключевое слово $schema из вашего документа, чтобы выбрать нужный, или откатывается на селектор в интерфейсе.

Стандартные форматы (email, date-time, uuid, ipv4 и т. д.) валидируются при включенной строгой проверке формата. Пользовательские форматы, объявленные в вашей схеме, трактуются как только аннотация, если вы не предоставите регулярное выражение через pattern.

Внутренние ссылки (#/$defs/foo) разрешаются автоматически. Внешние HTTP-ссылки по умолчанию не загружаются, из соображений безопасности. Сначала встройте свои внешние ссылки или используйте специализированный инструмент с поддержкой разрешения удаленных $ref.

Да. И схема, и документ остаются локальными. Вставленный контент никогда не загружается, безопасно для внутренних контрактов API и чувствительных данных.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Шпаргалка по Markdown

Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Шпаргалка по регулярным выражениям

Поисковый справочник регулярных выражений для JavaScript, PCRE2/PHP, Python re и .NET. Сравнивайте токены, синтаксис движков, якоря, группы, проверки и флаги.

Инструмент доступен на других языках