我在理解如何使用jsonschema
验证数据时遇到了一些麻烦,当我开始尝试验证日期时间值时就发现了这一点。
以下代码应引发一个ValidationError
异常,但不会。这是我想出的最短的例子。
def val(data, schema):
try:
jsonschema.validate(data, schema)
except jsonschema.ValidationError as e:
return e.args[0]
result = val('2008-09-0X22:47:31-07:00', {'format': 'date-time'})
print(result)
对于任何字符串值,结果均为None
,
val(42, {'type': 'string', 'format': 'date-time'})
引发异常“ 42不是'string'类型”。如果我省略'type'
模式项,并且验证程序再次返回None
,则不会发生 。
在我看来,我对如何使用该软件包有一些根本的误解。
答案 0 :(得分:1)
As stated in the jsonschema documentation:
默认情况下,不执行[
format
]的验证,但可选地,可以通过将格式检查对象挂接到IValidator
中来启用验证。
然后显示了如何执行此操作的示例:
validate(
"-12", {"format" : "hostname"}, format_checker=FormatChecker(),
)
所以您要做的就是:
jsonschema.validate('2008-09-0X22:47:31-07:00', {'format': 'date-time'}, format_checker=jsonschema.FormatChecker())
请注意,如页面底部所述,只有在您还安装了date-time
软件包的情况下,才强制使用strict-rfc3339
格式。