Що це таке
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.