如果另一个属性具有特定值,我需要创建一个期望属性存在的模式。
{"handleFailure":"redirect","redirectUrl":"http://something.com"}
和
{"handleFailure":"reject"}
应该都有效,但
{"handleFailure:"redirect"}
由于redirectUrl
属性不存在而无法生效。
我尝试使用两个模式(例如
)创建顶级oneOf
{
"type": "object",
"additionalProperties": false,
"oneOf": [
{
"properties": {
"handleFailure": {
"type": "string",
"enum": [
"redirect"
]
},
"redirectUrl": {
"type": "string",
"format": "uri"
}
}
},
{
"properties": {
"handleFailure": {
"type": "string",
"enum": [
"reject"
]
}
}
}
]
}
但是我收到有关未定义属性的错误。 有没有办法做到这一点?
答案 0 :(得分:2)
将"additionalProperties": false
标志插入子模式,以防止这些对象具有其他属性。
{
"type": "object",
"additionalProperties": false,
"oneOf": [
{
"additionalProperties": false,
"properties": {
"handleFailure": {
"type": "string",
"enum": [
"redirect"
]
},
"redirectUrl": {
"type": "string",
"format": "uri"
}
}
},
{
"additionalProperties": false,
"properties": {
"handleFailure": {
"type": "string",
"enum": [
"reject"
]
}
}
}
]
}