Можно ли создать схему JSON, которая проверяет, что массив содержит как минимум 1 экземпляр трех неперекрывающихся типов. Простым примером является массив чисел любой длины, который содержит по крайней мере одну 1, одну 2 и одну 3.
Я не могу использовать allOf
, потому что это подтвердит, что каждое число в массиве 1, 2 и 3 - число которых не может быть ?
Я не могу использовать anyOf
, потому что тогда у меня может быть массив только с одним элементом ?
Я не могу используйте oneOf
, потому что, опять же, у меня может быть массив с одним числом
(... также я не понимаю, должен ли я работать с ключом contains
или внутри ключа items
)
Я ищу способ сказать «по одному из каждого» * 1017 * из этих элементов. Возможно ли это со схемой JSON?
Вот пример с ошибкой oneOf
{
"type": "object",
"properties": {
"numbers": {
"type": "array",
"contains": {
"oneOf": [
{
"const": 1
},
{
"const": 2
},
{
"const": 3
}
]
},
"items": {
"type": "number"
}
}
}
}
[1] - НЕ ДОЛЖЕН проверять
[1,2] - НЕ ДОЛЖЕН проверять
[1 , 2,3] - ДОЛЖЕН проверить
[1,2,3,4] - ДОЛЖЕН проверить