使用JSON Schema将日期/时间字符串解析为日期时间

时间:2017-04-03 17:10:03

标签: 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.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文档的大型项目,这些文档可能非常大并且具有很多级别的嵌套,因此它不像单独查找键并在对象验证后处理它们那么容易。

1 个答案:

答案 0 :(得分:1)

您可以使用序列化库(例如Marshmallow)来验证,序列化和反序列化您的数据。