Я пытался получить правильную схему JSON. У меня есть свойство boolean
, на основе которого я должен определить необходимые свойства. Ниже приведен мой образец JSON
, который я хочу завершить при проверке с item3
нет.
{
"item1": true,
"item2": "ABC"
}
Это JSON, который я хочу, чтобы проверка прошла
{
"item1": true,
"item2": "ABC",
"item3": {
"subItem1": "ABC",
"subItem2": "BAC"
}
}
Аналогично, если item1
равен false
, то проверка должна пройти для обоих вышеупомянутых JSON.
Моя схема JSON для такой же, как показано ниже.
{
"definitions": {},
"type": "object",
"title": "The Root Schema",
"properties": {
"item1": {
"$id": "#/properties/item1",
"type": "boolean",
"title": "The Item1 Schema",
"default": false,
"examples": [
true
]
},
"item2": {
"$id": "#/properties/item2",
"type": "string",
"title": "The Item2 Schema",
"default": "",
"examples": [
"ABC"
],
"pattern": "^(.*)$"
},
"item3": {
"$id": "#/properties/item3",
"type": "object",
"title": "The Item3 Schema",
"required": [
"subItem1",
"subItem2"
],
"properties": {
"subItem1": {
"$id": "#/properties/item3/properties/subItem1",
"type": "string",
"title": "The Subitem1 Schema",
"default": "",
"examples": [
"AAA"
],
"pattern": "^(.*)$"
},
"subItem2": {
"$id": "#/properties/item3/properties/subItem2",
"type": "string",
"title": "The Subitem2 Schema",
"default": "",
"examples": [
"BAC"
],
"pattern": "^(.*)$"
}
}
}
},
"required": ["item1"],
"allOf": [{
"if": {
"properties": {
"item1": {
"enum": [
true
]
}
}
},
"then": {
"required": [
"item2",
"item3"
]
},
"else": {
"required": [
"item2"
]
}
}]
}
Моя проверка всегда терпит неудачу.
Если item1
равно true, subItem2
должно быть обязательным.
Если item1
ложно, то item3
не требуется, но все равно должно быть проверено, если включено.