DevToolPal
RU

Валидатор JSON Schema

Проверьте JSON-данные по JSON Schema (2020-12, 2019-09, draft-07 или draft-04) и посмотрите все ошибки с путями.

Работает локально, без загрузки на сервер

Параметры

Данные JSON

JSON Schema

Результат проверки

Здесь появится результат

Что это такое

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 и проверку форматов.

Как пользоваться

  1. Вставьте данные в поле Данные JSON, а схему — в JSON Schema, или загрузите файл в каждое поле. Пример загружает запись пользователя с несколькими намеренными ошибками.
  2. Результат обновляется по мере ввода: зелёная метка, если данные корректны, иначе — число ошибок и их список.
  3. Оставьте Версию в режиме «Авто», чтобы следовать $schema, или задайте её явно. Выключите Показывать все ошибки, чтобы остановиться на первой.
  4. Копировать ошибки копирует список как обычный текст — для баг-репорта или код-ревью.

Если одна из сторон не является корректным 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.