onlinetools.dev

JSON Schema: проверка и генерация

Проверяйте JSON по схеме или выводите схему из примера данных

Работает локально
loading…
Об этом инструменте

Две стороны одной дисциплины: вставьте пример 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 третьего элемента массива. Пустой путь ($) означает, что нарушение касается самого корня документа — неверный тип или отсутствующее обязательное свойство.
Почему выведенная схема строже или мягче, чем я ожидал?
Она описывает ровно тот пример, что вы дали: поля, присутствующие везде, становятся required, и разрешены только наблюдавшиеся типы. Дайте более разнообразный пример (массив репрезентативных объектов) для более общей схемы, а затем доработайте вручную — вывод не может знать ваших намерений.
Поддерживает ли валидация format, pattern и другие ключевые слова-ограничения?
Структурные ключевые слова (type, required, properties, items, enum, minimum, pattern…) применяются полностью. Строки format вроде "email" или "date-time" не проверяются — это отражает спецификацию JSON Schema, где format по умолчанию является аннотацией, и оберегает от ложной уверенности.
Похожие инструменты