我正在使用json-schema来验证模式。我想自定义日期时间类型。因此,相应地重新定义了类型并扩展了验证器。但是,它并没有以我正在寻找的方式返回错误。我的代码:
BaseVal = jsonschema.Draft202012Validator
def date_time(checker, instance):
return datetime.strptime(instance, "%Y-%m-%dT%H:%M:%S")
timedatechecker = BaseVal.TYPE_CHECKER.redefine('date-time', date-time)
Validator = jsonschema.validators.extend(BaseVal, type_checker=timedatechecker)
errors = sorted(Validator(schema=schema).iter_errors(json), key=lambda e: e.path)
errors 变量当前包含 schema 验证期间的所有错误,例如 id、age 等,但不包含 datetime 发生的错误。我正在从验证函数返回错误列表。没有错误时返回 True,否则返回错误列表。当我从邮递员发布错误的日期时间输入时,它返回 500 Internal Server Error,并且 vscode 在终端中显示此错误消息:
strptime raise ValueError("time data %r does not match format %r", %ValueError: time data '2015-01-35T05:05:05' does not match format '%Y-%m-%dT%H:%多发性硬化症'
如何让 json-schema 捕获它,以便我可以从错误中使用它?或任何其他能达到我想要得到的相同效果的解决方法。谢谢。