以下是我的JSON架构的摘录。
我想指定algorithm
和results
都是必需的。
另外我想指定:
algorithm
为algorithm1
时,结果必须是results1
,results2
或results3
之一。algorithm
为algorithm2
时,结果必须是results2
,results3
或results4
之一。这可能吗?
"algorithm": {
"description": "description...",
"type": "string",
"enum": [
"",
"algorithm1",
"algorithm2"
]
},
"results": {
"description": "description...",
"type": "string",
"enum": [
"",
"results1",
"results2",
"results3",
"results4"
]
},
"required": ["algorithm", "results"]
答案 0 :(得分:1)
感谢@jruizaranguren的上述参考,我能够弄明白。
"required": ["results"],
"results": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/Results1" },
{ "$ref": "#/definitions/Results2" }
]
},
"definitions": {
"Results1": {
"type": "object",
"required": ["algorithm", "results"],
"properties": {
"algorithm": {
"type": "string",
"enum": [ "algorithm1" ]
},
"results": {
"type": "string",
"allOf": [
{ "result": "results1" },
{ "result": "results2" },
{ "result": "results3" }
]
}
}
},
"Results2": {
"type": "object",
"required": ["algorithm", "results"],
"properties": {
"algorithm": {
"type": "string",
"enum": [ "algorithm2" ]
},
"results": {
"type": "string",
"allOf": [
{ "result": "results2" },
{ "result": "results3" },
{ "result": "results4" }
]
}
}
}