У меня есть JSON, имеющий два родственных объекта JSON, и я хотел бы иметь схему, где может удовлетворять условие, указанное ниже:
Мне нужна схема, где мне нужен атрибут 'рефери' во 2-м объектекогда нет перечисления HARD_RULES OR SOFT_RULES в 1-м объекте.
Однако, при наличии перечисления HARD_RULES OR SOFT_RULES из object1, атрибут 'referee' во 2-м объекте должен игнорироваться или отбрасываться.
Обратите внимание, что:
- Мне нужны и object1, и 2, когда есть правило SOFT / HARD.
- Мне нужен object2, когда object1 полностью недоступен, так как нет SOFT /HARD rules.
- 'Арбитр' обязателен в object2, если в 1-м объекте нет перечисления HARD_RULES OR SOFT_RULES.
{
"items": [{//Object 1
"required": ["host"],
"properties": {
"type": {
"enum": ["HARD_RULES", "SOFT_RULES"],
"type": "string"
},
"host": {
"type": "string"
}
}
}, {//Object 2
"required": ["refree"],
"properties": {
"type": {
"enum": ["INDOOR"],
"type": "string"
},
"refree": {
"type": "string"
}
}
}]
}
Некоторые примеры:
//valid 1
{
"items":[
{
"type":"HARD_RULES",
"host": "some-host",
"age":10
},
{
"type":"INDOOR",
"time":"some-time"
//no referee here
}
]
}
//valid 2
{
"items":[
{
"type":"SOFT_RULES",
"host": "some-host",
"age":10
},
{
"type":"INDOOR",
"time":"some-time"
//no referee here
}
]
}
//valid 3
{
"items":[{
"type":"INDOOR",
"time":"some-time",
"refree":"Tom" // referee here
}]
}
//invalid
{
"items":[
{
"type":"SOFT_RULES",
"host": "some-host",
"age":10
},
{
"type":"INDOOR",
"time":"some-time",
"refree":"Tom" // referee cannot be here as we have SOFT_RULES above
}
]
}