我想用在同一数组下具有不同格式的架构来验证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模式中是否可以根据这些要求检查此列表?
答案 0 :(得分:0)
我睡了一夜,想出了如何制作oneOf模式。我试图在“属性”中使用它,但事实证明这是无法完成的。对于完美的解决方案,我想我需要“ explicitOf”这种方法。但是,这已经足够了。
{
"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"
}
}
}
]
}