【问题标题】:unable to use date validation in jsonschema无法在 jsonschema 中使用日期验证
【发布时间】:2016-11-28 14:39:33
【问题描述】:

我无法在 jsonschema 中使用“日期”进行类型验证

myschema = {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "self": {
        "primary_key": ["email"]
    },
    "properties": {
        "email": {
            "pattern": "[^@]+@[^@]+\.[^@]+"
        },
        "dob": {
            "description": "Date of Birth YYYY-MM-DD",
            "type": "date"
        }
    }
}

当我使用上面的架构执行下面的代码时

from jsonschema import validate
validate({ "dob": "2001-02-30"}, myschema)

获得以下错误跟踪

Unhandled Exception: 'date' is not valid under any of the given schemas

Failed validating 'anyOf' in schema['properties']['properties']['additionalProperties']['properties']['type']:
    {'anyOf': [{'$ref': '#/definitions/simpleTypes'},
               {'items': {'$ref': '#/definitions/simpleTypes'},
                'minItems': 1,
                'type': 'array',
                'uniqueItems': True}]}

On instance['properties']['dob']['type']:
    'date'

更新:似乎日期是一种格式而不是类型,但它仍然让我输入无效的日期。我可以在 jsonschema 代码中清楚地看到它尝试使用 datetime 解析它,但我无法在其中打断点。

【问题讨论】:

    标签: python validation python-3.x jsonschema


    【解决方案1】:

    date 应该用作"format",而不是“类型”:

    "dob": {
        "description": "Date of Birth YYYY-MM-DD",
        "type": "string", 
        "format": "date"
    }
    

    然后,要检查格式,请使用:

    from jsonschema import validate, FormatChecker
    
    validate({"dob": "2001-02-30"}, myschema, format_checker=FormatChecker()) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多