Python jsonschema 不标记日期时间错误

标签 python json validation jsonschema

我在理解如何使用 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 不是‘字符串’类型”。如果我省略 'type' 架构项,并且验证器再次返回 None,则不会发生这种情况。

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

最佳答案

As stated in the jsonschema documentation:

By default, no validation [of format] is enforced, but optionally, validation can be enabled by hooking in a format-checking object into an 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 软件包时才会强制执行日期-时间 格式。

关于Python jsonschema 不标记日期时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52729786/

相关文章:

python - 从几个 numpy 系列创建 Pandas 数据框

java - 如何从 Java 中的 Google Drive API 获取 JSON 中所有文件夹中的所有文件

php - 在 CSV 和 TXT 上验证标题

javax.validation.ConstraintValidationException : validation failed for classes

python - Tensorflow 损失在我的 RNN 中出现分歧

python - 遍历 PyMongo 游标抛出 InvalidBSON : year is out of range

regex - 如何使用正则表达式将 JSON 对象与唯一 ID 进行匹配

php - 解析 JSON 数组并提取选择列表 ID 和值的值

XML 验证错误

python - 线程脚本不打印到控制台