JSON и схемы

Композиция в JSON Schema: разница между oneOf, anyOf и allOf

oneOf требует совпадения ровно с одной подсхемой, anyOf — как минимум с одной, а allOf — со всеми перечисленными подсхемами одновременно.

Опубликовано

Сравнение oneOf, anyOf и allOf

Ключевое словоТребуемое совпадениеТипичный сценарий
oneOfРовно одна подсхемаВзаимоисключающие структуры (дискриминатор)
anyOfХотя бы одна подсхемаДопускается совпадение с несколькими формами
allOfВсе подсхемы одновременноПересечение и объединение ограничений

Проверьте пример

Проверьте ровно один вариант контакта

Дискриминаторы const позволяют различить ветви email и phone.

oneOf: EmailContact | PhoneContact

Ожидаемый результат: Объект email соответствует ровно одной ветви.

Проверьте пример

Разрешите пересекающиеся ветви anyOf

Положительное целое число удовлетворяет ограничениям number и integer и остаётся корректным для anyOf.

anyOf: [number >= 0, integer]

Ожидаемый результат: Значение 4 корректно, хотя соответствует обеим ветвям.

Генератор схем

Построение сложных схем

Сгенерируйте общую структуру и добавьте правила композиции.

Открыть JSON to JSON Schema →