JSONSchema... Как сделать обязательным поле по условию?
Возникла необходимость изменять обязательность поля и отразить данный факт в JSONSchema. Суть вот в чем, поле (или секция в JSON) становятся обязательными, если другое поле принимает определенное значение. Из интернета я подчерпнул, что для этого используется конструкция if-then, в которой прописывается условие и обязательность поля. Да вот беда, почему-то, когда я эту штутку прописываю, у меня условие выполняется всегда, независимо от условий. То естьЮ, если я пытаюсь отвалилировать файл, он в любом случае начинает указывать не отсуствие данной секции. Возникла необходимость изменять обязательность поля и отразить данный факт в JSONSchema. Суть вот в чем, поле (или секция в JSON) становятся обязательными, если другое поле принимает определенное значение. Из интернета я подчерпнул, что для этого используется конструкция if-then, в которой прописывается условие и обязательность поля. Да вот беда, почему-то, когда я эту штутку прописываю, у меня условие выполняется всегда, независимо от условий. То естьЮ, если я пытаюсь отвалилировать файл, он в любом случае начинает указывать не отсуствие данной секции.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"M": {
"$ref": "#/definitions/M_type"
},
"definitions": {
"A_type": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"r": {
"type": "string",
},
"c": {
"type": "string",
"enum": [
"U",
"E"
]
}
},
"required": [
"r",
"c"
]
}
},
"B_type": {
"type": "object",
"additionalProperties": false,
"properties": {
"s: {
"$ref": "#/definitions/A_type",
}
},
"M_type": {
"type": "object",
"additionalProperties": false,
"properties": {
"A": {
"$ref": "#/definitions/A_type",
},
"B": {
"$ref": "#/definitions/B_type"
},
},
"dependencies":{
"B":{
"if":{"properties":{"B":{"s":[{"c":{"const":"U"}}]}}},
"then":{"required":["A"]}}
}}}}
Как можно догадаться, хочу я, чтобы атрибут "A" становился обязательным, когда атрибут по адресу ```B/income/[0]/c="U"```
Ну вот, всегда он требует наличия секции A. Был бы благодарен за помощь