Utilia

Валідатор JSON Schema

Перевірте документ JSON за схемою JSON Schema у браузері. Кожна помилка наведена зі шляхом у документі, ключовим словом і шляхом у схемі.

Як перевірити JSON за схемою

  1. Вставте схему в поле JSON Schema, а дані – в Документ JSON або виберіть готовий випадок у списку Приклад.
  2. Залиште в полі Версія значення Автоматично ($schema), щоб використати версію, названу в $schema схеми, або примусово виберіть draft 4, 7, 2019-09 чи 2020-12.
  3. Перевірка виконується під час введення; кнопка Перевірити запускає її знову. Кнопка Форматувати обидва переформатовує відступи в обох текстах.
  4. Прочитайте результат: зелений рядок, коли документ коректний, або таблиця помилок.

Як читати таблицю помилок

Кожен рядок – це одне порушене правило:

  • Шлях у документі – це JSON Pointer до значення, яке не пройшло перевірку. /roles/1 – другий елемент roles; (корінь) – весь документ.
  • Ключове слово – правило схеми, яке порушено: type, required, minimum, pattern, format, additionalProperties тощо.
  • Повідомлення пояснює причину, наприклад 0 is less than 1.
  • Шлях у схемі вказує на ключове слово всередині схеми, наприклад /properties/id/minimum, щоб ви швидко знайшли правило.

Тексти повідомлень про помилки формує сам валідатор, і вони наводяться англійською мовою; решта інтерфейсу українською.

Перевірка не зупиняється на першій проблемі: перелічуються всі помилки. Коли властивість об’єкта не проходить перевірку, валідатор повідомляє підсумок («Property “id” does not match schema»), а за ним точну причину. Опція Показувати лише найконкретніші помилки ховає ці підсумки; зніміть позначку, щоб побачити весь ланцюжок. Помилки під anyOf і oneOf завжди зберігаються разом із конкретними помилками кожної гілки, бо вони мають сенс лише разом.

Що підтримується

  • Версії: 4, 6 (перевіряється за правилами draft 7), 7, 2019-09 і 2020-12, зокрема $defs/definitions, локальний $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties та unevaluatedItems.
  • Формати: перевіряються date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer і relative-json-pointer. Невідомі формати ігноруються, як дозволяє специфікація.
  • Посилання: $ref може вказувати будь-куди всередині схеми, зокрема на оголошений нею $id. Віддалені схеми ніколи не завантажуються; посилання на іншу URL-адресу вважається нерозв’язаним.

Цей інструмент перевіряє документи за вашою схемою. Він не перевіряє, чи сама схема відповідає метасхемі, але попереджає про невідомі назви type, як-от "strin" чи "int", – поширену описку, яку валідатори інакше мовчки ігнорують.

Приклади

  • Профіль користувача (2020-12): required, довжини рядків, format: email, enum усередині items, uniqueItems і additionalProperties: false.
  • Список товарів із $ref (draft-07): масив, елементи якого посилаються на #/definitions/product, з pattern для артикула й ціною з exclusiveMinimum.
  • Конфігурація з if/then (2019-09): сертифікат, потрібний лише в режимі HTTPS, oneOf між електронною поштою та URI і числові обмеження.

До кожного прикладу додано документ із навмисними помилками, щоб ви побачили, як виглядають повідомлення.

Поширені запитання

Чи завантажуються мої дані на сервер?

Ні. Схема й документ перевіряються у вашому браузері; нічого не надсилається на сервер.

Чому `$ref` моєї схеми «нерозв’язаний»?

Валідатор знає лише схему, яку ви вставили. $ref на інший файл чи URL-адресу не може бути розкритий; скопіюйте потрібні означення в $defs і вказуйте на #/$defs/….

Яку версію вибрати?

Ту, на яку орієнтується ваш проєкт, і оголосіть її через $schema. Для нових схем актуальна версія 2020-12; її також використовує OpenAPI 3.1.

Чому integer відхиляє 2.0?

Не відхиляє: JSON Schema вважає 2.0 цілим числом, бо його значення ціле. 2.5 не проходить "type": "integer".

Чи працює інструмент офлайн?

Так. Щойно сторінка завантажилася й ви виконали першу перевірку (вона завантажує валідатор), з’єднання не потрібне.