Python 使用JSON模式将日期/时间字符串解析为日期时间

Python 使用JSON模式将日期/时间字符串解析为日期时间,python,parsing,datetime,jsonschema,Python,Parsing,Datetime,Jsonschema,我可以使用jsonschema指定一个值是我的JSON对象中的有效日期,如下所示: import jsonschema schema = {'type': 'object', 'properties': {'dt': {'type': 'string', 'format': 'date'}}} # fine jsonschema.validate({'dt': '2017-01-01'}, schema, format_checker=jsonschema.FormatChecker())

我可以使用
jsonschema
指定一个值是我的JSON对象中的有效日期,如下所示:

import jsonschema

schema = {'type': 'object', 'properties': {'dt': {'type': 'string', 'format': 'date'}}}

# fine
jsonschema.validate({'dt': '2017-01-01'}, schema, format_checker=jsonschema.FormatChecker())

# jsonschema.exceptions.ValidationError: 'not a date' is not a 'date'
jsonschema.validate({'dt': 'not a date'}, schema, format_checker=jsonschema.FormatChecker())
但是,这使得
dt
的值保持不变,仍然是一个字符串。我需要将日期/时间转换为
datetime.date
/
datetime.datetime
实例,在给定JSON模式(使用
jsonschema
或任何其他库)的情况下,是否有方法自动执行此操作

理想情况下,我想要这样的东西:

 import somelibrary

 schema = {'type': 'object', 'properties': {'dt': {'type': 'string', 'format': 'date'}}

 out = somelibrary.validate_and_parse({'dt': '2017-01-01'}, schema)
 assert out == {'dt': datetime.date(2017, 1, 1)}

 somelibrary.validate_and_parse({'dt': 'not a date'}, schema) # SomeError

我有一个包含许多JSON文档的大型项目,这些文档可能非常大,并且有许多嵌套级别,因此这不像我自己查找密钥并在对象验证后处理它们那么简单。

您可以使用序列化库来验证、序列化和反序列化数据。

我将转到第页这可能是重复的。这是一个非常好的页面,告诉您如何从字符串解析日期时间。在您的情况下,只需将验证和解析分开。毕竟,它们是两个独立的任务。您希望转换为什么日期的重复
“非日期”
?只是为了清楚我想要的是p将JSON模式和JSON blob分配给某个函数,并对其进行验证,并将日期/时间转换为基于该模式的
datetime.date
/
datetime.datetime
对象