0
我不知道這是可能的JSON模式,但我也有類似的對這些數據的數字/布爾值的嵌套列表:我如何可以驗證驗證使用JSON模式
[1, 1, [0, 0, [true]], true]
[0,0, 1],這樣至少有一個項目是真實的?
到目前爲止,我已成功地創建模式這一點:
{
"type": "array",
"items": {
"$ref": "#/definitions/_items"
},
"definitions": {
"_items": {
"anyOf": [
{
"enum": [
0,
1
],
"type": "integer"
},
{
"enum": [
false,
true
],
"type": "boolean"
},
{
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/_items"
}
]
}
}
]
}
}
}
顯然它並驗證所有的接受值,但它沒有考慮是考慮,如果有所有,一些,一個或者沒有值1 /真。我誤解了,anyOf,allOf和oneOf都是爲此保留的...
我結束了非常類似的解決方案,使用不是notation。你能解釋爲什麼在這裏需要anyOf ref#嗎?這對於深度嵌套結構是否真的可以遞歸地工作? – MarkokraM
是的,這將適用於任何級別的嵌套。 '{「$ ref」:「#」}'指的是整個模式。這是一個遞歸引用。或者,您可以通過複製前三行(類似於您所做的)來完成。但是,遞歸引用是一個更清晰的解決方案,因爲它消除了重複。 – Jason
我打開了與此相關的其他問題,你@Jason可能可以給出答案:http://stackoverflow.com/questions/42026162/xor-logic-in-json-schema-for-list-of-布爾項 – MarkokraM