【发布时间】:2017-06-09 19:15:50
【问题描述】:
我有一组 2 个属性,它们始终是可选的,但只有在另一个(始终需要)布尔属性的值为 true 时才允许存在。
总是可选但并不总是允许的属性被命名为:max_recurrences 和 recurrence_arguments。它们所依赖的值为true 的布尔属性命名为:recurring。
我想出了下面的架构,我认为它是可行的,但是我复制了oneOf 数组的每个项目中的所有其他属性。我正在寻找一种方法来避免这种重复。
{
"id": "plan_schedule",
"type": "object",
"oneOf": [
{
"properties": {
"start_date": {
"type": "string",
"format": "date-time"
},
"end_date": {
"type": "string",
"format": "date-time"
},
"trigger": {
"$ref": "re_non_empty_string"
},
"arguments": {
"type": "object",
"minProperties": 1
},
"recurring": {
"type": "boolean",
"enum": [true],
},
"max_recurrences": {
"type": "integer",
"minimum": 1
},
"recurrence_arguments": {
"type": "object",
"minProperties": 1
}
}
},
{
"properties": {
"start_date": {
"type": "string",
"format": "date-time"
},
"end_date": {
"type": "string",
"format": "date-time"
},
"trigger": {
"$ref": "re_non_empty_string"
},
"arguments": {
"type": "object",
"minProperties": 1
},
"recurring": {
"type": "boolean",
"enum": [false],
},
}
}
],
"additionalProperties": false,
"required": ["start_date", "trigger", "recurring"]
}
谁能帮帮我?我想使用 v4,但如果有帮助,我愿意使用 v5。
为了进一步澄清,我希望只需要在整个架构中列出一次属性:start_date、end_date、trigger 和 arguments。
【问题讨论】:
标签: json validation schema jsonschema