4
我很難弄清楚如何根據其中一個屬性的值驗證對象數組。那麼,我有這樣一個JSON對象:JSON模式anyOf基於其中一個屬性進行驗證
{
"items": [
{
"name": "foo",
"otherProperty": "bar"
},
{
"name": "foo2",
"otherProperty2": "baz",
"otherProperty3": "baz2"
},
{
"name": "imInvalid"
}
]
}
我想說的是
- 項目可以包含anyOf對象,其中名稱可以是「富」或「foo2的」
- ,如果它是「 foo」的則唯一有效的其他屬性(必需)是 ‘otherProperty’
- 如果名字是‘foo2的’,那麼唯一有效的其他 性質是‘otherProperty2’和‘otherProperty3’既需要
- 對於「名稱」,「foo」和「foo2」沒有其他值是有效的
- 對象本身在項目數組中是可選的,有些可能會重複。
我試過各種東西,但我似乎無法得到失敗,當我驗證。例如,名稱「imInvalid」應該導致驗證錯誤。這是我最近的模式迭代。我錯過了什麼?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": ["items"],
"properties": {
"items": {
"type": "array",
"minItems": 1,
"additionalProperties": false,
"properties": {
"name": {
"anyOf": [
{
"type": "object",
"required": ["name", "otherProperty"],
"additionalProperties": false,
"properties": {
"otherProperty": { "type": "string" },
"name": { "enum": [ "foo" ] }
}
},{
"type": "object",
"required": ["name", "otherProperty2", "otherProperty3" ],
"additionalProperties": false,
"properties": {
"otherProperty2": { "type": "string" },
"otherProperty3": { "type": "string" },
"name": { "enum": [ "foo2" ] }
}
}
]
}
}
}
}
}
我認爲你是嵌套名稱和其他名稱內的財產。 – jmugz3
如果你想寫一個答案,顯示正確的方式,並驗證http://json-schema-validator.herokuapp.com這將是偉大的 - 正如我所說,我已經嘗試了很多不同的事情在過去的情侶沒有運氣的日子。以上只是最近的一次。 –