Что это такое
JSON Schema — словарь для описания структуры JSON-данных: какие свойства обязательны у объекта, какого типа каждое значение, допустимые диапазоны и шаблоны, длина массивов и многое другое. Его используют в спецификациях OpenAPI, редакторы — для автодополнения в конфигурационных файлах, а серверы — чтобы отклонять некорректные запросы.
Этот валидатор проверяет JSON-документ по схеме и перечисляет все найденные проблемы. Для каждой ошибки показано место в данных (JSON Pointer вроде /tags/1), понятное сообщение и ключевое слово схемы, которое не прошло, — так данные или схему можно быстро исправить. Поддерживаются draft 2020-12, 2019-09, draft-07 и draft-04, включая $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties и проверку форматов.
Как пользоваться
- Вставьте данные в поле Данные JSON, а схему — в JSON Schema, или загрузите файл в каждое поле. Пример загружает запись пользователя с несколькими намеренными ошибками.
- Результат обновляется по мере ввода: зелёная метка, если данные корректны, иначе — число ошибок и их список.
- Оставьте Версию в режиме «Авто», чтобы следовать
$schema, или задайте её явно. Выключите Показывать все ошибки, чтобы остановиться на первой. - Копировать ошибки копирует список как обычный текст — для баг-репорта или код-ревью.
Если одна из сторон не является корректным JSON, сообщение укажет, где проблема — в данных или в схеме, — и назовёт строку и столбец.
Пример
Со схемой:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
документ {"age": -1} даёт две ошибки: в (корне) отсутствует обязательное свойство id; в /age значение меньше минимума 0.
Советы
Добавьте "additionalProperties": false, чтобы ловить опечатки в именах свойств — иначе они проходят незаметно. Используйте enum или const для фиксированных значений и pattern для строк вроде артикулов. Когда схема разрастётся, вынесите повторяющиеся части в $defs и ссылайтесь на них через $ref.
Частые вопросы
› Какие версии JSON Schema поддерживаются?
Draft 2020-12, 2019-09, draft-07 (охватывает и draft-06) и draft-04. В режиме «Авто» версия берётся из ключевого слова $schema; схемы без $schema считаются версией 2020-12.
› Что означают пути в ошибках?
Первый путь — это JSON Pointer на значение в ваших данных, не прошедшее проверку, например /items/2/price; «(корень)» означает весь документ. Серая строка показывает сработавшее ключевое слово и его место в схеме, например minimum · #/properties/age/minimum.
› Проверяются ли форматы вроде email и date-time?
Да. Проверяются распространённые форматы: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer и другие. Неизвестные форматы игнорируются, как допускает спецификация.
› Может ли схема ссылаться на другие файлы?
Ссылки внутри одной схемы работают, например $ref на #/$defs/address. Внешние URL не загружаются, потому что данные не покидают браузер; вставьте нужные определения в $defs.