Как выполнить проверку схемы JSON на объектах collection+json?
Я хотел бы проверить объекты collection+json со схемой, которые имеют разные форматы в одном и том же массиве. Например:
{
"href": "https://example.com/whatnot",
"data": [
{
"name": "foo",
"value": "xyz:123:456"
},
{
"name": "bar",
"value": "8K"
},
{
"name": "baz",
"value": false
}
]
}
Здесь значением является одно из точно шаблонного (\w+:\d+:\d+), одно из точно ([\w\d]+) и одно из точно булевых. Других вариантов нет.
Можно ли в схеме json проверить этот список на соответствие этим требованиям?
1 ответ
Решение
Я спал всю ночь и подумал, как сделать схему oneOf. Я пытался использовать его внутри "свойств", но оказалось, что это невозможно. Я думаю, что для идеального решения мне понадобится метод "явный". Но на данный момент этого достаточно.
{
"type": "object",
"required": [
"name",
"value"
],
"oneOf": [
{
"properties":
{
"name":
{
"type": "string",
"pattern": "foo"
},
"value":
{
"type": "string",
"pattern": "^(\\w+:\\d+:\\d+)$"
}
}
},
{
"properties":
{
"name":
{
"type": "string",
"pattern": "bar"
},
"value":
{
"type": "string",
"pattern": "^([\\w\\d]+)$"
}
}
},
{
"properties":
{
"name":
{
"type": "string",
"pattern": "baz"
},
"value":
{
"type": "boolean"
}
}
}
]
}