Валидатор 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 и чувствительных данных.
Сопутствующие инструменты
Справочная таблица 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. Сравнивайте токены, синтаксис движков, якоря, группы, проверки и флаги.
Инструмент доступен на других языках
- JSON Schema-validator [SV]
- Validateur de schéma JSON [FR]
- JSON Schema-validator [NL]
- เครื่องมือตรวจสอบ JSON Schema [TH]
- Trình xác thực JSON Schema [VI]
- أداة التحقق من مخطط JSON [AR]
- Penentu Struktur JSON [ID]
- Validador de JSON Schema [ES]
- JSONスキーマバリデーター [JA]
- JSON 스키마 검증기 [KO]
- JSON-Schema-Validator [DE]
- Walidator JSON Schema [PL]
- Validador de JSON Schema [PT]
- JSON Şeması Doğrulayıcı [TR]
- JSON 模式验证器 [ZH]
- JSON Schema Validator [EN]
- Validator di JSON Schema [IT]