スキーマ検証を変更して、特定のオブジェクトに最も適したスキーマを見つける方法を見つけようとしています。スキーマがあるとしましょう:
{
"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 カスタム キーワードを使用してそれを行う方法があるのだろうか? 特に、スキーマがオブジェクトに対して有効でない場合、カスタム キーワードを使用してオーバーライドして有効にすることはできますか?