Если под "затем включить все 4 зависимых свойства" вы имеете в виду придание им требуемых свойств, тогда я могу подумать об этом решении на основе черновика-07:
Если eventType
имеет значение «x», «y» или «z», тогда только DeviceDetails является обязательным.В остальном все остальное есть.(Я позволю вам заменить эти значения заполнителей самостоятельно:)
Я позволил себе установить minProperties: 1
в DeviceDetails
, appDetails
и ClientDetails
, так как предполагал, что вы предпочитаете неПустые объекты для них.Если в этом нет необходимости, вы можете безопасно удалить это из схемы.
{
"properties": {
"eventType": {
"type": "string"
},
"event_time": {
"type": "integer"
},
"ClientDetails": {
"type": "object",
"minProperties": 1
},
"appDetails": {
"type": "object",
"minProperties": 1
},
"DeviceDetails": {
"type": "object",
"minProperties": 1
}
},
"if": {
"properties": {
"eventType": {
"enum": [
"x",
"y",
"z"
]
}
}
},
"then": {
"required": [
"DeviceDetails"
]
},
"else": {
"required": [
"event_time",
"ClientDetails",
"appDetails",
"DeviceDetails"
]
}
}