我使用 jsonschema 来验证 JSON blob,其中特定属性可以是日期或日期时间。因此,我希望format关键字允许多种潜在格式。
例如,以下代码有效:
import rfc3339_validator
schema = {
"title": "example",
"type": "object",
"required": ["example_property"],
"properties": {
"example_property": {
"type": "string",
"format": "date-time"
}
}
}
validate(instance, schema, format_checker=jsonschema.FormatChecker())
Run Code Online (Sandbox Code Playgroud)
但理想情况下,我会使用format潜在格式列表,例如["date-time", "date"].
有办法实现这一点吗?我的临时解决方法是使用pattern关键字来确保该属性至少包含日期。
尝试使用anyOf这样的关键字:
import jsonschema
import rfc3339_validator
schema = {
"title": "example",
"type": "object",
"required": ["example_property"],
"properties": {
"example_property": {
"type": "string",
"anyOf": [
{
"format": "date-time"
},
{
"format": "date"
}
]
}
}
}
date_instance = {"example_property": "1970-01-01"}
date_time_instance = {"example_property": "2019-10-12T07:20:50.52Z"}
nonsense_instance = {"example_property": "nonsense"}
jsonschema.validate(date_instance, schema, format_checker=jsonschema.FormatChecker())
jsonschema.validate(date_time_instance, schema, format_checker=jsonschema.FormatChecker())
jsonschema.validate(nonsense_instance, schema, format_checker=jsonschema.FormatChecker())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |