Попробуйте:
{
"if":{
"type":"object",
"properties":{
"i0":{
"type":"object",
"properties":{
"j0":{
"type":"object",
"required":["a0"]
}
},
"required":["j0"]
}
},
"required":["i0"]
},
"then":{
"type":"object",
"properties":{
"i1":{
"type":"object",
"properties":{
"j1":{
"type":"object",
"required":["a1"]
}
},
"required":["j1"]
}
},
"required":["i1"]
}
}
Вы должны использовать общую структуру в ключевых словах if
/ then
, начиная с любого общего корня.В этом случае их пути начинают расходиться в свойстве i0
/ i1
, поэтому вам необходимо включить всю структуру с этой точки.
Ключевые слова type
гарантируют, что у вас есть объект,в противном случае схема может пройти проверку при использовании других типов, таких как string
s или boolean
s.
Ключевые слова required
гарантируют, что подсхемы if
/ then
соответствуют только объектамкоторые на самом деле содержат пути свойств i0.j0.a0
/ i1.j1.a1
соответственно.
Кроме того, ключевые слова required
для свойств a0
/ `a1 только указывают, что они существуют .Вы можете добавить дополнительную проверку к этой подсхеме, если вам это нужно.