我正在尝试找到一种方法来更改架构验证以找到最适合给定对象的架构。假设我们有一个模式:
{
"oneOf": [
{
"$ref": "#/definitions/a"
},
{
"$ref": "#/definitions/b"
}
],
"definitions": {
"a": {
"type": "object",
"properties": {
"prop1": {
"enum": ["x"]
}
},
"required": ["prop1"]
},
"b": {
"type": "object",
"properties": {
"prop1": {
"enum": ["y"]
},
"prop2": {
"type": "string"
}
},
"required": ["prop1", "prop2"]
}
}
}
现在,如果我有一个 object { "prop1": "y" }
,我希望它被解析为#/definitions/b
类型,即使它对于这个方案并不真正有效。也就是说,我只想使用prop1
属性来解决。
我想知道是否有办法使用 AJV 自定义关键字来做到这一点,而无需重建架构本身?特别是,如果模式对对象无效,是否可以使用自定义关键字来覆盖它并使其有效?