如何在JSON模式中编写复杂的条件验证



下面是示例JSON模式。我需要实现这个验证-

如果CCD_ 1具有值"0";CCD_ 2";并且CCD_ 3具有";CCD_ 4";在提供的值列表中,则subProperty1property3内是强制性的

{
"type": "object",
"additionalProperties": false,
"properties": {
"property1": {
"type": "string"
},
"property2": {
"type": "array",
"items": {
"type": "string"
}
},
"property3": {
"type": "object",
"properties": {
"subProperty1": {
...
},
"subProperty2": {
...
},
}
}
}
}

我尝试使用这个JSON-来实现它

"if": {
"properties": {
"property1": {
"const": "abc"
},
"property2": {
"contains": {
"properties": {
"items": {
"const": "abc111"
}
}
}
}
}
},
"then": {
"dependentSchemas": {
"property1": {
"required": [ "property3" ],
"message": "Error - Missing property3 with subProperty1",
"properties": {
"property3": {
"required": [ "subProperty1" ]
}
}
}
}
}

但这并没有如预期的那样奏效。有人能帮我修一下条件逻辑吗?

如果不知道事情在哪些方面没有按预期进行,很难说。但是您可能在if子句中缺少一个required关键字——以确保property1确实存在。(如果属性根本不存在,则property10关键字的计算结果为true。(然后,您还需要在then子句中使用required: ["property3"]

此外,您根本不需要dependentSchemas——您正在添加对property1的依赖项,但它已经在if子句中了,所以它是多余的。

最新更新