代码之家  ›  专栏  ›  技术社区  ›  holdenweb

Python jsonschema未标记日期时间错误

  •  0
  • holdenweb  · 技术社区  · 6 年前

    我在理解如何使用 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'})
    

    如果我忽略了 'type' 模式项,验证程序再次返回 没有 .

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   jwodder    6 年前

    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 已安装程序包。