Python jsonschema 验证时区

Posted

技术标签:

【中文标题】Python jsonschema 验证时区【英文标题】:Python jsonschema Validate Timezone 【发布时间】:2020-07-15 05:40:52 【问题描述】:

只是想知道是否有办法扩展传递给 jsonschema 验证器的 FormatChecker?我似乎在文档中找不到任何东西。 基本上,我正在尝试检查字符串值是否是有效的时区。我在时区方面使用 pytz。但是,我需要检查提供的 json 字符串属性是否包含在该列表中。 我能想到的唯一其他方法是将列表提取为架构中的枚举字段。但是,这是一个巨大的列表,而且似乎是一种非常笨拙的方式。理想情况下,我想要这样的东西:

from pytz import common_timezones
from jsonschema import validate, FormatChecker

timezone_checker = FormatChecker(formats=["timezone"])
timezone_checker.extend(check_timezone)

instance =  "timezone": "Australia/Sydney" 
schema = 
    "properties": 
        "timezone": "type": "string", "format": "timezone"
    


validate(instance=instance, schema=schema, format_checker=timezone_checker)

...

def check_timezone(p):
    if not isinstance(p, str):
        return False
    return p in common_timezones

提前致谢。

【问题讨论】:

【参考方案1】:

执行此操作的函数称为FormatChecker.checks

【讨论】:

以上是关于Python jsonschema 验证时区的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中验证 JSON Schema 模式?

如何使用 JsonSchema 进行实时客户端验证?

对于具有递归$ ref的JSONSchema,ajv验证失败

JSONSchema(草稿7)未验证数组的子定义

使用 JsonSchema 验证 API 的返回格式

通过JSONSchema完成接口自动化测试的数据验证