我有以下简单的JSON模式,它根据我的数据的内容字段进行正则表达式匹配:
{
"$schema":"http://json-schema.org/schema#",
"allOf":[
{
"properties":{
"content":{
"pattern":"some_regex"
}
}
}
}
它成功匹配以下数据:
{
"content": "some_regex"
}
现在假设我要添加一个UUID列表以忽略我的数据:
{
"content": "some_regex",
"ignoreIds" ["123", "456"]
}
如果我想在 ignoreIds 列表中存在给定值时修改我的架构不匹配,则会出现问题:
这是我失败的尝试:
{
"$schema": "http://json-schema.org/schema#",
"allOf": [{
"properties": {
"content": {
"pattern": "some_regex"
}
}
}, {
"properties": {
"ignoreIds": {
"not": {
// how do I say 'do not match if "123" is in the ignoreIds array'????
}
}
}
}]
}
任何帮助将不胜感激!
答案 0 :(得分:2)
您的ignoreIds的JSON模式必须是:
"ignoreIds": {
"type": "array",
"items": {
"type": "integer",
"not": {
"enum": [131, 132, whatever numbers you want]
}
}
}
说
数组中与ignore-indeum匹配的任何值都会产生 json无效
这当然也适用于字符串数组:
"ignoreIds": {
"type": "array",
"items": {
"type": "string",
"not": {
"enum": ["131", "132"]
}
}
}
进行测试