"actions"配列に特定のオブジェクトがあるかどうかを検証しようとしています。各オブジェクトは、typeプロパティに応じて独自のプロパティを持つことができます。アクション配列は、これらのタイプのオブジェクトからの複数の出現を持つことができます。JSON配列のオブジェクトをAjvで検証する
マイJSON:この例では
{
"actions": [
{
"type": "X",
"a": 1,
"b": 2,
"c": 3
},
{
"type": "Y",
"d": 1,
"e": 2,
"f": 3
}
]
}
= Xは、B、Cのような特性を必要とした型を持つオブジェクト。配列内のオブジェクト型Yには、d、e、fというプロパティが必要です。
私はスイッチのキーワードでこれを検証しようとしています:
{
"type": "object",
"required": [
"actions"
],
"properties": {
"actions": {
"type": "array",
"items": {
"switch": [
{
"if": {
"properties": {
"type": {
"pattern": "^X$"
}
}
},
"then": {
"required": [
"a",
"b",
"c"
]
}
},
{
"if": {
"properties": {
"type": {
"pattern": "^Y$"
}
}
},
"then": {
"required": [
"d",
"e",
"f"
]
}
}
]
}
},
}
}
しかし、それでもまだ、私は、各オブジェクトタイプは中プロパティで指定された配列のオブジェクトを検証するために、スイッチのキーワードを使用する方法を見つけ出すことができませんでしたそのオブジェクトはそのオブジェクトタイプをプロパティで識別することができます。
私はそれに偽のサブスキーマを加えました。プロパティ 'a'を削除すると、jsonを検証することができません。それは有効と言います。 –
いいえ、そうではありません:https://runkit.com/esp/58bc33722d90170014fbce7f – esp
ありがとう、問題は私が4.xではなく5.0.3-betaを使用したことでした。 –