← Все гайды

Проверка JSON по JSON Schema онлайн

· 2 мин чтения

JSONJSON Schema

Как проверить документ JSON на соответствие схеме: выбрать схему из проекта или загрузить файл, прочитать ошибки по-русски с привязкой к строкам.

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

Способ 1. Документ в редакторе JSON

  1. Откройте редактор JSON с проверяемым документом.
  2. Справа выберите вкладку Проверка по схеме.
  3. Выберите схему из своих артефактов JSON Schema (после входа) или нажмите Загрузить схему — подойдёт файл .json или .yaml.
  4. Нажмите Проверить. Итог появится на вкладке («Документ соответствует схеме» или «Не соответствует схеме: ошибок N» со списком), а сами ошибки — в строках документа: подчёркнуто место, при наведении — сообщение на русском, например «должно иметь обязательное поле id».
Ошибки проверки по схеме в строках документа JSON
Ошибки проверки по схеме привязаны к строкам документа

Способ 2. Схема в редакторе JSON Schema

  1. Откройте схему в редакторе JSON Schema.
  2. Справа перейдите на вкладку Проверка.
  3. Вставьте документ JSON или YAML, загрузите файл или выберите YAML-артефакт и нажмите Проверить.

Первый способ удобен, когда правите данные, второй — когда отлаживаете саму схему на нескольких примерах.

Какие схемы поддерживаются

  • Версии draft-07 и 2020-12 (по полю $schema).
  • Форматы date, date-time, email, uuid, uri и другие проверяются, а не только описываются.
  • Ссылки $ref на другие файлы схем разрешаются по дереву папок проекта — схему можно разбить на файлы, если она хранится в проекте.

Как читать ошибки

  • Сообщение относится к месту в документе, а не в схеме: «/items/0/price — должно быть ≥ 0» означает поле price первого элемента массива items.
  • При additionalProperties: false лишний ключ — ошибка; так ловятся опечатки в названиях полей.
  • Если ошибок много, начните с верхнего уровня: пропущенный объект порождает каскад ошибок во вложенных полях.

Если схемы ещё нет, её можно вывести из примера — см. «Генерация JSON Schema из JSON».

Пример

Схема требует поля id и total ≥ 0 и запрещает лишние поля:

{
  "type": "object",
  "required": ["id", "total"],
  "additionalProperties": false,
  "properties": {
    "id": {"type": "string", "format": "uuid"},
    "total": {"type": "number", "minimum": 0}
  }
}

Документ {"id": "42", "total": -5, "totla": 10} получит три ошибки: id не в формате uuid, total меньше 0 и недопустимое поле totla (опечатка).

Вопросы и ответы

Схема указывает на другие файлы — проверка их найдёт? Да, если схема и связанные файлы лежат в одном проекте: $ref разрешаются по дереву папок. Загруженный с диска одиночный файл ссылок на другие файлы не увидит.

Чем отличаются draft-07 и 2020-12? В 2020-12 определения лежат в $defs (в draft-07 — definitions), массивы кортежей описываются через prefixItems, появились dependentRequired и unevaluatedProperties. Указывайте версию в $schema — от неё зависит, как проверяется схема.

Можно ли проверить YAML по той же схеме? Да — «Проверка YAML по JSON Schema».