DevToolPal
UK

Валідатор 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.