jsonschema的format关键字可以接受多个值吗?

2024-05-14 00:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用jsonschema来验证JSON blob,其中的特定属性可以是日期或日期时间。因此,我希望format关键字允许多种可能的格式

例如,以下代码起作用:

import rfc3339_validator

schema = {
    "title": "example",
    "type": "object",
    "required": ["example_property"],
    "properties": {
        "example_property": {
            "type": "string",
            "format": "date-time"
        }
    }
}

validate(instance, schema, format_checker=jsonschema.FormatChecker())

但理想情况下,我会将format与潜在格式列表一起使用,例如["date-time", "date"]

有没有办法做到这一点?我的临时解决方法是使用pattern关键字来确保属性至少包含一个日期


Tags: 代码jsonformatdate属性timeexampleschema
1条回答
网友
1楼 · 发布于 2024-05-14 00:28:09

尝试使用^{}关键字,如下所示:

import jsonschema
import rfc3339_validator

schema = {
    "title": "example",
    "type": "object",
    "required": ["example_property"],
    "properties": {
        "example_property": {
            "type": "string",
            "anyOf": [
                {
                    "format": "date-time"
                },
                {
                    "format": "date"
                }
            ]

        }
    }
}

date_instance = {"example_property": "1970-01-01"}
date_time_instance = {"example_property": "2019-10-12T07:20:50.52Z"}
nonsense_instance = {"example_property": "nonsense"}

jsonschema.validate(date_instance, schema, format_checker=jsonschema.FormatChecker())
jsonschema.validate(date_time_instance, schema, format_checker=jsonschema.FormatChecker())
jsonschema.validate(nonsense_instance, schema, format_checker=jsonschema.FormatChecker())

相关问题 更多 >