두 속성은 항상 선택 사항이지만 다른 (항상 필수) 부울 속성의 값이 참된.oneOf (v4 또는 v5)를 사용하는 JSON 스키마에서 중복 제거
항상 선택 사항이지만 항상 허용되는 것은 아닌 속성은 이름이 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
한 번 전체 스키마에.
. 그건 내가 실제로 원하는 것이 아니다. 필드는 절대 필요하지 않지만'recurring'이'true'가 아닌 경우에는 허용해서는 안됩니다. – LukeP
어떤 옵션을 의미합니까? – esp
편집 내용은 실제로 원하는 것처럼 보이지만'recurring'이 true 인 경우 필요한 필드를 만드는 것처럼 맨 위 2 번 모습입니다. 나는 틀린가? – LukeP