Валідатор JSON-схеми

Перевіряйте JSON відповідно до JSON Schema (Draft 2020-12) і отримуйте помилки з повним шляхом екземпляра

JSON

Схема

Валідатор JSON-схеми

Перевіряйте JSON відповідно до JSON Schema (Draft 2020-12) і отримуйте помилки з повним шляхом екземпляра

Можливості

  • Перевіряє JSON-екземпляри за будь-якою JSON Schema через Ajv (де-факто еталонну реалізацію), з повною підтримкою ключових слів Draft-07, 2019-09 і 2020-12
  • Звіт про помилки перелічує кожну невдачу як `шлях: повідомлення` — шляхи екземпляра слідують нотації RFC 6901 JSON Pointer, тож можна одразу спуститися до проблемного вузла у вкладених даних
  • Усі помилки звітуються за один прохід (allErrors: true), а не зупиняючись на першій — ви бачите всі проблеми одразу
  • Компіляцію в суворому режимі вимкнено, тож нестандартні чи розширені схеми все одно компілюються; allowUnionTypes увімкнено для схем із union-типами
  • Кнопка «Завантажити приклад» заповнює обидві панелі маленьким прикладом (об'єкт із обов'язковими id і name плюс масив tags), щоб побачити валідатор без набирання тексту
  • Кнопка «Копіювати помилки» виводить повний список як розділений переводами рядків блок `шлях: повідомлення` — вставляйте прямо в тікет або фікстуру тесту
  • Повністю на стороні клієнта: Ajv працює у вашому браузері, жоден JSON чи схема не надсилаються на сервер, і інструмент працює офлайн після завантаження сторінки
  • Окремий звіт про помилку розбору відрізняє некоректний JSON від порушень схеми — ви завжди знаєте, чи виправляти синтаксис чи контракт

Як використовувати

  1. Вставте JSON-екземпляр для перевірки в ліве текстове поле.
  2. Вставте вашу JSON-схему в праве поле — використайте Draft 2020-12, 2019-09 або Draft-07; Ajv обирає автоматично за $schema.
  3. Натисніть «Перевірити». Якщо обидва входи розібрані чисто, Ajv компілює схему й виконує валідацію.
  4. Прочитайте результат: зелений банер «Валідно» означає, що екземпляр відповідає; інакше кожна невдача показує шлях JSON Pointer і читабельне повідомлення Ajv.
  5. Натисніть «Копіювати помилки», щоб отримати повний звіт як рядки `шлях: повідомлення» для поширення або зберігання у фікстурі.
  6. Скористайтесь «Завантажити приклад», щоб заповнити обидві панелі робочим прикладом, якщо хочете перевірити поведінку перед вставленням своїх даних.

Поради та найкращі практики

  • Завжди вказуйте поле $schema у вашій схемі, щоб Ajv обрав правильну семантику чернетки.
  • Надавайте перевагу additionalProperties: false під час розробки, щоб ловити опечатки в іменах полів рано.
  • Використовуйте $defs (або definitions у Draft-07) для спільних підсхем — посилання роблять схеми DRY і доступними для перегляду.
  • Якщо валідація проходить локально, але падає в CI, перевірте, що в обох середовищах використовуються однакові версія Ajv та чернетки.
  • Зберігайте вивід «Копіювати помилки» у ваших тестових фікстурах, щоб регресії з'являлися як діфи порушень схеми.

Запитання та відповіді

Які чернетки JSON Schema підтримуються?

Draft-07, Draft 2019-09 і Draft 2020-12. Ajv обирає метасхему автоматично за полем $schema; якщо опущено, повертається до семантики Draft-07. Новіша 2020-12 заміняє definitions на $defs і items на prefixItems/items — приймаються і старі, і нові ключові слова.

Що означає шлях у помилці?

Ajv звітує instancePath у нотації RFC 6901 JSON Pointer: '/users/0/email' означає «властивість email першого користувача». Корінь — порожній рядок (відображається як $ в UI). Це спрощує повернення до проблемного поля у вкладених даних.

Чому моя схема не компілюється?

Поширені причини: некоректний JSON (зайві коми, одинарні лапки, ключі без лапок); $ref на неіснуюче визначення; або ключове слово в суворому режимі, яке Ajv не розпізнає. Панель помилки розбору схеми показує точну помилку компіляції Ajv; суворий режим тут уже вимкнено, тож більшість нестандартних схем компілюються.

Чому я отримую помилку «unknown keyword» або «unknown format»?

Стандартні ключові слова JSON Schema (type, required, properties тощо) вбудовані. Користувацькі імена форматів на кшталт «date-time», «uri», «email» за замовчуванням не валідуються — Ajv вважає їх анотаціями, доки ви не завантажите ajv-formats. Якщо формати треба перевіряти, запускайте валідацію в кроці збірки із встановленим ajv-formats.

Чи зупиняється валідатор на першій помилці?

Ні. Ajv налаштовано з allErrors: true, тож кожна невдача звітується. Для глибоко вкладених помилок це може бути багатослівно; якщо потрібна лише перша, передавайте JSON+схему у власний виклик ajv() з allErrors: false у збірці.

Чи працює це для дуже великих JSON-документів?

Так, але правильний патерн у коді — compile-once-validate-many. Цей інструмент перекомпілює на кожному кліку «Перевірити», що нормально для перевірок під час розробки, але не для гарячих шляхів продакшну. Використана Ajv-збірка — стандартний ESM-бандл; очікуйте часи компіляції у мілісекундах для типових схем.

Чи надсилаються мої JSON і схема кудись?

Ні. Обидва текстові поля залишаються у вашому браузері; Ajv працює локально; ми не логуємо, не зберігаємо й не телеметруємо вміст. Можна перевірити у вкладці «Мережа» DevTools — мережевого виклику при натисканні «Перевірити» немає.

У чому різниця зі вкладкою схеми в JSON Formatter?

Вкладка схеми JSON Formatter використовує той самий Ajv-підтриманий SchemaService для разових перевірок поряд із форматуванням, JSONPath та деревом. Цей окремий валідатор дає вам дві великі панелі для вставлення, завантажувач прикладу, експорт «Копіювати помилки» та одну виділену URL для збереження в закладки чи поширення — краще, коли валідація — ваша єдина задача.