happytails.ai
Русский

Объединитель JSON Schema

Объедините несколько JSON-схем или композицию allOf в одну схему. Правила, которые невозможно выполнить одновременно, перечисляются как конфликты.

Принимает до 100 000 символов и от 2 до 50 схем. Всё выполняется в браузере. Можно скачать объединённую схему в JSON, отчёт JSON и список конфликтов CSV. Массив JSON-схем или одна схема с allOf. Подходит и YAML. До 100 000 символов. Проверьте настройки перед запуском.

Ваш результат

Сообщите о проблеме или поделитесь идеей.

Объединитель JSON Schema
  1. Вставьте массив JSON со схемами либо одну схему, где allOf перечисляет схемы для объединения.
  2. Выберите версию JSON Schema или оставьте автоматическое определение.
  3. Запустите объединение и просмотрите конфликты и правила, сохранённые в allOf.
  4. Скачайте объединённую схему и отчёт о конфликтах.

Что нужно знать

Принимает до 100 000 символов и от 2 до 50 схем. Всё выполняется в браузере. Можно скачать объединённую схему в JSON, отчёт JSON и список конфликтов CSV.

Как объединяются правила

Типы пересекаются, перечисления и значения const пересекаются, границы minimum и maximum становятся строже, списки required объединяются, а свойства сливаются по одному. Если одна схема запрещает дополнительные свойства, запрещается и свойство, определённое только в другой; если такое свойство обязательно, указывается конфликт.

Что сохраняется в allOf

Некоторые ключевые слова нельзя точно объединить, например два разных регулярных выражения, oneOf, not, if и then, patternProperties рядом с другими правилами свойств и unevaluated properties. Они сохраняются внутри allOf в объединённой схеме и перечисляются в отчёте, поэтому смысл схемы не меняется.

Проверка результата

Конфликты указывают место в схеме. Конфликт необязательного свойства или правило только для чисел сами по себе не делают всю схему невыполнимой. Отчёт помечает provenUnsatisfiable только тогда, когда ограниченное структурное доказательство устанавливает, что ни один экземпляр не может удовлетворить объединённой схеме. В противном случае эта метка не доказывает выполнимость. Если конфликтов нет, необязательные проверки примеров с Ajv проверяют кандидаты каждой композиции по другой. Отдельные входные схемы сохраняют собственные корни локальных ссылок. Примеры служат свидетельством, а не исчерпывающим доказательством эквивалентности. Валидатор отклоняет схемы, где __proto__ используется как ключ свойства, шаблона или зависимости.