python使用json序列化datetime类型实例解析
使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码:
# -*- coding: cp936 -*-
from datetime import datetime
import json
if __name__=='__main__':
now = datetime.now()
json.dumps({'now':now})
运行会出现下面的错误信息:
Traceback (most recent call last):
File "C:\Users\xx\Desktop\t.py", line 8, in <module>
json.dumps({'now':now})
File "C:\Python27\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Python27\lib\json\encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py", line 264, in iterencode
return _iterencode(o, 0)
File "C:\Python27\lib\json\encoder.py", line 178, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: datetime.datetime(2012, 12, 26, 11, 51, 33, 409000) is not JSON serializable
意思是说datetime类不支持Json序列化
我们需要对json做下扩展,让它可以支持datetime类型。
class ComplexEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
return obj.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, obj)
在调用json.dumps时需要指定cls参数为ComplexEncoder
例如:
json.dumps({'now':now}, cls=ComplexEncoder)
总结
以上就是本文关于python使用json序列化datetime类型实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
相关文章
Tensorflow2.4使用Tuner选择模型最佳超参详解
这篇文章主要介绍了Tensorflow2.4使用Tuner选择模型最佳超参详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-11-11
分位数回归模型quantile regeression应用详解及示例教程
这篇文章主要为大家介绍了介绍了分位数回归quantile regeression的概念详解及代码示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助2021-11-11
Python执行错误“由于找不到python39.dll,无法继续执行代码”解决的步骤
这篇文章主要介绍了在Python开发中遇到“找不到python39.dll”的错误,并提供了详细的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下2024-12-12
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
这篇文章主要介绍了Python 网络编程之TCP客户端/服务端功能,结合实例形式分析了Python使用socket套接字实现TCP协议下的客户端与服务器端数据传输操作技巧,需要的朋友可以参考下2019-10-10


最新评论