Валидатор JSON Schema
Вставьте схему и документ, выберите draft, и валидатор проверит документ по каждому ключевому слову, которое использует ваша схема, type, required, enum, oneOf, $ref, if/then/else, пользовательский format, сообщая о каждом нарушении с указателем в стиле JSONPath на точное проблемное место.
Как валидировать по схеме
-
1
Вставьте схему
JSON Schema draft 04, 07 или 2020-12. Ключевое слово `$schema` (если есть) автоматически выбирает draft.
-
2
Вставьте документ
JSON, который вы хотите проверить. Сначала он должен быть валидным JSON: синтаксические ошибки показываются перед оценкой по схеме.
-
3
Валидируйте
О каждом нарушении сообщается с указателем JSON (`/user/email`) и неудавшимся ключевым словом (`format`, `required` и т. д.).
-
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 и чувствительных данных.
Сопутствующие инструменты
Смешивание цветов
Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.
Генератор вымышленных телефонных номеров
Создавайте до 50 вымышленных номеров из официально зарезервированных диапазонов пяти стран.
Генератор конфигурации webpack
Создайте webpack.config.js для webpack 5 под чистый JavaScript, React или Vue: TypeScript, Babel, CSS или Sass, изображения, HtmlWebpackPlugin, dev-сервер и команда npm install.
Генератор бейджей README
Создавайте бейджи shields.io для файлов README на GitHub: статус сборки, версия, лицензия, число загрузок и покрытие кода. Просмотрите и скопируйте фрагмент Markdown.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Генератор случайных адресов
Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.
Инструмент доступен на других языках
- أداة التحقق من مخطط JSON [AR]
- JSON-Schema-Validator [DE]
- JSON Schema-validator [NL]
- Walidator JSON Schema [PL]
- Penentu Struktur JSON [ID]
- Trình xác thực JSON Schema [VI]
- Validateur de schéma JSON [FR]
- JSON Schema-validator [SV]
- JSONスキーマバリデーター [JA]
- Validador de JSON Schema [PT]
- เครื่องมือตรวจสอบ JSON Schema [TH]
- Validador de JSON Schema [ES]
- JSON 스키마 검증기 [KO]
- JSON Schema Validator [EN]
- Validator di JSON Schema [IT]
- JSON Şeması Doğrulayıcı [TR]
- JSON 模式验证器 [ZH]