2つのプロパティのセットは常にオプションですが、別の(常に必須の)ブール値の値が本当。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
1時間。
このスキーマは** recurring' 'の値に基づいて' recurrence_arguments'と 'max_recurrences' **が要求されるべきかどうかを決定されたように見えます。それは実際に私が探しているものではありません。フィールドは決して必要ではありませんが、 'recurring'が' true'でなければ許されません。 – LukeP
どのオプションがありますか? – esp
あなたの編集は実際には私が望むように見えますが、 'recurring'が真の場合に必要なフィールドを作るようなトップ2の外観になります。私は間違っていますか? – LukeP