介绍
这篇文章主要介绍python如何使用json序列化datetime类型实例解析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码:
#, - *安康;编码:cp936 - * - 得到datetime import  datetime import json if __name__==& # 39; __main__ # 39;: ,你=,datetime.now () ,json.dumps({& # 39;现在# 39;:现在})
运行会出现下面的错误信息:
Traceback (most recent call 最后): 用户,File “C: \ \ xx \桌面\ t.py",, line 8日,拷贝& lt; module> json.dumps才能({& # 39;现在# 39;:现在}) ,File “C: \ Python27 \ lib \ json \ __init__.py",, line 231年,转储文件拷贝 return 才能_default_encoder.encode (obj) ,File “C: \ Python27 \ lib \ json \ encoder.py",, line 201年,拷贝编码 时间=chunks 才能;self.iterencode (o,, _one_shot=True) ,File “C: \ Python27 \ lib \ json \ encoder.py",, line 264年,iterencode拷贝 return 才能;_iterencode (o,, 0) ,File “C: \ Python27 \ lib \ json \ encoder.py",, line 178年,默认的拷贝 raise 才能;TypeError (repr (o), +,“, is not JSON serializable") TypeError: datetime.datetime(2012, 12日,26日,11日,51岁,33岁,409000),is not JSON 可序列化的
意思是说datetime类不支持Json序列化
我们需要对Json做下扩展,让它可以支持datetime类型。
class ComplexEncoder (json.JSONEncoder): def 才能;违约(自我,,obj): ,,,if isinstance (obj, datetime): ,,,,,return obj.strftime (& # 39; Y % - % - % d % H: % m: % & # 39;) ,,,elif isinstance (obj,日期): ,,,,,return obj.strftime (& # 39; Y - % - % d % # 39;) ,,,: ,,,,,return json.JSONEncoder.default(自我,,obj)
在调用json.dumps时需要指定cls参数为ComplexEncoder
例如:
json.dumps({& # 39;现在# 39;:现在},,cls=ComplexEncoder)
以上是“python如何使用json序列化datetime类型实例解析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!