Я пытаюсь проверить, есть ли в массиве «действия» определенные объекты. Каждый объект может иметь свои собственные свойства в зависимости от свойства типа. Массив действий может иметь несколько вхождений из этого типа объектов, а не только один.
Мой JSON:
{
"actions": [
{
"type": "X",
"a": 1,
"b": 2,
"c": 3
},
{
"type": "Y",
"d": 1,
"e": 2,
"f": 3
}
]
}
В этом примере объект с type = X имеет обязательные свойства как a, b, c. Тип объекта Y в массиве имеет обязательные свойства d, e, f.
Я пытаюсь проверить это с помощью ключевого слова switch:
{
"type": "object",
"required": [
"actions"
],
"properties": {
"actions": {
"type": "array",
"items": {
"switch": [
{
"if": {
"properties": {
"type": {
"pattern": "^X$"
}
}
},
"then": {
"required": [
"a",
"b",
"c"
]
}
},
{
"if": {
"properties": {
"type": {
"pattern": "^Y$"
}
}
},
"then": {
"required": [
"d",
"e",
"f"
]
}
}
]
}
},
}
}
Но все же я не мог понять, как использовать ключевое слово switch для проверки объектов массивов, где каждый тип объекта определяется свойством в объекте, поэтому тип объекта можно идентифицировать с помощью свойства.