Я использую черновой вариант 4 схемы json, и мне нужно сделать некоторые свойства обязательными, но только если перечисление присутствует в другом свойстве: так что для аргумента, только если "option3" присутствует в моем массиве "entity", тогда"option_overwrite" и "option_list" обязательны для заполнения.
Допустимые записи могут быть:
entities: [option1, option2]
ИЛИ
entities: [option1, option3]
option_overwrite: true
option_list: [obj1, obj2]
Однако это не должно произойти:
entities: [option1, option3]
Возможно ли это с черновиком 4 или мне понадобятся операторы if, then else из черновика 6/7?
Моя нынешняя схема выглядит следующим образом, что, по-видимому, подтверждает со свойствами по умолчанию около 50%время:
{
"title": "Parameters",
"description": "run time parameters",
"type": "object",
"properties": {
"entities": {
"description": "Entities to import",
"type": "array",
"items": {
"type": "string",
"enum": [
"option1",
"option2",
"option3"
]
},
"default": [
"option1",
"option2"
]
},
"option_list": {
"description": "item list",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"option_overwrite": {
"description": "overwrite option",
"type": "boolean"
}
},
"anyOf": [
{
"not": {
"$ref": "#/definitions/contains-option3"
}
},
{
"required": [
"option_overwrite",
"option_list"
]
}
],
"definitions": {
"contains-option3": {
"properties": {
"entities": {
"not": {
"items": {
"not": {
"enum": [
"option3"
]
}
}
}
}
}
}
}
}
Заранее спасибо.