我有一個請求兩個可能的JSON對象的對象:JSON模式用於與任一A和B或C所要求的特性
{
"from": "string",
"to": "string",
"text": "string"
}
或
{
"number": "integer",
"text": "string"
}
在兩種情況下「文本」屬性是可選的。其它性能要求(無論是「數,或兩者‘從’和‘到’)。
會有什麼正確的JSON架構驗證這一點?
我有一個請求兩個可能的JSON對象的對象:JSON模式用於與任一A和B或C所要求的特性
{
"from": "string",
"to": "string",
"text": "string"
}
或
{
"number": "integer",
"text": "string"
}
在兩種情況下「文本」屬性是可選的。其它性能要求(無論是「數,或兩者‘從’和‘到’)。
會有什麼正確的JSON架構驗證這一點?
這是另一個我認爲更清晰的解決方案dependencies
條款確保「from」和「to」總是成對,然後oneOf
條款可以非常簡單,並避免不需要的樣板文件。
{
"type": "object",
"properties": {
"from": { "type": "string" },
"to": { "type": "string" },
"number": { "type": "integer" },
"text": { "type": "string" }
},
"dependencies": {
"from": ["to"],
"to": ["from"]
},
"oneOf": [
{ "required": ["from"] },
{ "required": ["number"] }
]
}
不錯!非常感謝 –
最後設法建立正確的方案。
{
"definitions": {
"interval": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": ["from", "to"],
"not": {
"required": ["number"]
}
},
"top": {
"type": "object",
"properties": {
"number": {
"type": "integer"
},
"text": {
"type": "string"
}
},
"required": ["number"],
"allOf": [
{
"not": {
"required": ["from"]
}
},
{
"not": {
"required": ["to"]
}
}
]
}
},
"type": "object",
"oneOf": [
{"$ref": "#/definitions/interval"},
{"$ref": "#/definitions/top"}
]
}
可能重複[JSON模式:我如何需要一個領域或另一個或(其他兩個之一),但不是全部?](http://stackoverflow.com/questions/24023536/json-schema-how -do-i-require-one-field-or-another-or-one-two-others-but-no) –