是否可以使jsonschema
只有两个字段中的一个。
例如,如果我希望JSON
使用以太start_dt
或end_dt
但不能同时使用{
"name": "foo",
"start_dt": "2012-10-10"
}
,则可以使用图片。像这样:
{
"name": "foo",
"end_dt": "2012-10-10"
}
{
"name": "foo",
"start_dt": "2012-10-10"
"end_dt": "2013-11-11"
}
{
"title": "Request Schema",
"type": "object",
"properties": {
"name":
{
"type": "string"
},
"start_dt":
{
"type": "string",
"format": "date"
},
"end_dt":
{
"type": "string",
"format": "date"
}
}
}
我应该在架构中添加什么:
{{1}}
答案 0 :(得分:9)
您可以使用oneOf
表达此信息。这意味着数据必须与提供的子模式的恰好一个匹配,但不能超过一个。
将此与required
相结合,此架构表明实例必须定义start_dt
,或定义end_dt
- 但如果它们包含两者,则它无效:
{
"type": "object",
"properties": {
"name": {"type": "string"},
"start_dt": {"type": "string", "format": "date"},
"end_dt": {"type": "string", "format": "date"}
},
"oneOf": [
{"required": ["start_dt"]},
{"required": ["end_dt"]}
]
}
使用您的三个示例进行在线演示: