IZN Tools

Валидатор JSON

Проверить документ по JSON Schema и перечислить все нарушения.

Схема необязательна — без неё проверяется только синтаксис
ДАННЫЕ
JSON SCHEMA
Ожидание ввода
Посчитано на вашем устройстве

Два разных вопроса

{"id": "1"} — совершенно валидный JSON и совершенно неверный, если ваш API ждёт целое число. Проверка синтаксиса этого не поймает, проверка по схеме поймает. Инструмент делает и то и другое, именно в таком порядке: схеме нечего проверять в тексте, который не разбирается.

Как написать схему, от которой есть польза

Минимально полезная схема называет тип, обязательные поля и тип каждого поля:

{
  "type": "object",
  "required": ["id", "email"],
  "properties": {
    "id": { "type": "integer", "minimum": 1 },
    "email": { "type": "string", "format": "email" }
  }
}

Две добавки окупаются быстро. "additionalProperties": false ловит опечатку в названии ключа, которая иначе просто игнорируется. "minimum", "minLength" и "enum" ловят значения правильного типа, но бессмысленные по сути.

Где схемы оправдывают себя

  • Проверка полезной нагрузки вебхука до того, как на неё среагировали
  • Проверка конфигурационного файла в CI, чтобы плохой деплой падал на сборке, а не в проде
  • Документирование того, что принимает эндпоинт, в форме, понятной машине

Вопросы

Чем это отличается от форматтера?+

Форматтер отвечает, разбирается ли текст, и делает его читаемым. Валидатор отвечает, правильной ли формы полученные данные: что `id` — целое число, что `email` присутствует, что в `tags` лежат строки. Синтаксис и схема — разные вопросы, и документ может пройти один и провалить другой.

Схема обязательна?+

Нет. Оставьте поле схемы пустым — проверится только синтаксис. Со схемой это превращается в проверку контракта, а именно она нужна перед отправкой в API, который иначе ответит отказом.

Почему выводится сразу несколько ошибок?+

Потому что чинить их по одной долго. Проверка идёт в режиме сбора всех ошибок, поэтому один проход показывает всё, что не так с документом, а не первое попавшееся.

Какие версии JSON Schema поддерживаются?+

Драфты 07, 2019-09 и 2020-12, плюс распространённые форматы строк — email, uri, date, date-time, uuid, ipv4. Проверка форматов включена, поэтому `"format": "email"` действительно отклоняет не-почту, а не служит украшением.