Валідатор і генератор JSON Schema
Перевіряйте JSON за схемою або виводьте схему зі зразка даних
Про цей інструмент
Два напрямки однієї дисципліни: вставте зразок JSON і отримайте виведену з нього схему draft-07, або вставте дані разом зі схемою й побачте кожне порушення з його шляхом JSON. Перевірка працює на Ajv — тому самому рушії, який використовує більшість сервісів на Node, — тож що проходить тут, пройде і в CI.
Виведення мислить продакшн-категоріями: ключі об’єктів стають типізованими властивостями й записами required, масиви зливають форми всіх своїх членів, цілі числа відрізняються від дробових, а ключі, наявні лише в частині елементів масиву, слушно лишаються поза required. Результат — відправна точка, яку ви затягуєте форматами, діапазонами й шаблонами.
Відповіді API та файли конфігурації — саме ті дані, які найменше хочеться бачити на сторонньому сервері. І виведення, і перевірка виконуються повністю у вашому браузері.
Часті запитання
- Яку чернетку JSON Schema підтримано?
- Виведення видає draft-07 — чернетку з найширшою підтримкою серед редакторів і валідаторів. Перевірка приймає draft-07 і попередні чернетки, які Ajv розуміє в несуворому режимі; ключові слова 2019-09/2020-12 здебільшого теж працюють, бо невідомі ключові слова ігноруються, а не викликають фатальну помилку.
- Що означає $ у шляхах порушень?
- Це корінь документа, у стилі JSONPath: $.age означає властивість age верхнього рівня, а $.items.2.name — name третього елемента масиву. Порожній шлях ($) означає, що порушення стосується самого кореня документа — хибний тип або відсутня обов’язкова властивість.
- Чому виведена схема суворіша або вільніша, ніж я очікував?
- Вона описує точно той зразок, який ви дали: поля, наявні всюди, стають обов’язковими, а дозволені лише спостережені типи. Згодуйте їй різноманітніший зразок (масив репрезентативних об’єктів) заради загальнішої схеми, а тоді підправте вручну — виведення не може знати наміру.
- Чи підтримує перевірка format, pattern та інші ключові слова обмежень?
- Структурні ключові слова (type, required, properties, items, enum, minimum, pattern…) виконуються повністю. Рядки format на кшталт "email" чи "date-time" не перевіряються — це віддзеркалює специфікацію JSON Schema, де format типово є анотацією, і убезпечує від хибної впевненості.