繁体   English   中英

Python jsonschema不标记日期时间错误

[英]Python jsonschema not flagging date-time errors

我在理解如何使用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 ,则不会发生这种情况。

在我看来,我对如何使用该软件包有一些根本的误解。

如jsonschema文档中所述:

默认情况下,不强制执行[of 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())

请注意,如页面底部所述,只有在您还安装了strict-rfc3339软件包的情况下,才会强制采用date-time格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM