На самом деле нет способа смоделировать minContains
/ maxContains
в draft-07. Вот несколько примеров наиболее близких, которые вы можете получить.
Как "minContains": 2
, если у вас есть фиксированное количество элементов. Это некрасиво, но вы можете перечислить все возможные способы появления двух элементов в массиве.
{
"type": "array",
"maxItems": 4,
"minItems": 4,
"anyOf": [
{
"items": [
{ "$ref": "#/definitions/isCorrect-true" },
{ "$ref": "#/definitions/isCorrect-true" }
]
},
{
"items": [
{ "$ref": "#/definitions/isCorrect-true" },
true,
{ "$ref": "#/definitions/isCorrect-true" }
]
},
{
"items": [
{ "$ref": "#/definitions/isCorrect-true" },
true,
true,
{ "$ref": "#/definitions/isCorrect-true" }
]
},
{
"items": [
true,
{ "$ref": "#/definitions/isCorrect-true" },
{ "$ref": "#/definitions/isCorrect-true" }
]
},
{
"items": [
true,
{ "$ref": "#/definitions/isCorrect-true" },
true,
{ "$ref": "#/definitions/isCorrect-true" }
]
},
{
"items": [
true,
true,
{ "$ref": "#/definitions/isCorrect-true" },
{ "$ref": "#/definitions/isCorrect-true" }
]
}
],
"definitions": {
"isCorrect-true": {
"type": "object",
"properties": {
"isCorrect": { "const": true }
}
}
}
}
Как "minContains": 2
, за исключением того, что все элементы true
должны быть первыми в массиве.
{
"type": "array",
"items": [
{ "$ref": "#/definitions/isCorrect-true" },
{ "$ref": "#/definitions/isCorrect-true" }
],
"definitions": {
"isCorrect-true": {
"type": "object",
"properties": {
"isCorrect": { "const": true }
}
}
}
}
Как "maxContains": 2
, за исключением того, что все элементы true
должны быть первыми в массиве.
{
"type": "array",
"items": [
true,
true
],
"additionalItems": { "not": { "$ref": "#/definitions/isCorrect-true" } },
"definitions": {
"isCorrect-true": {
"type": "object",
"properties": {
"isCorrect": { "const": true }
}
}
}
}
Как "minContains": 2, "maxContains": 2
, за исключением всех true
элементов должен быть первым в массиве.
{
"type": "array",
"items": [
{ "$ref": "#/definitions/isCorrect-true" },
{ "$ref": "#/definitions/isCorrect-true" }
],
"additionalItems": { "not": { "$ref": "#/definitions/isCorrect-true" } },
"definitions": {
"isCorrect-true": {
"type": "object",
"properties": {
"isCorrect": { "const": true }
}
}
}
}