TypeError: Object of type 'datetime' is not JSON serializable 解决方法

python中这个错误的原因是json模块中的dumps方法无法对字典中datetime时间格式的数据进行转化,因为原生dumps的功能是将字典格式转化为字符串格式,但不支持转化时间格式的数据,所以需要将原生json类的部分内容改写,来处理这种特殊日期格式。

例如字典dic:

import json
from datetime import datetime

dic = {'time': datetime.now()}
print(dic)
dic_str = json.dumps(dic)
print(dic_str)

直接json.dumps(dic)会报如下错误:
TypeError: Object of type datetime is not JSON serializable

为解决此现象,我们只需重写dumps方法,令其继承json中JSONEncoder类,在调用json.dumps时传入相应类参数即可,实现代码如下:

import json
from datetime import datetime


class DateEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime("%Y-%m-%d %H:%M:%S")
        else:
            return json.JSONEncoder.default(self, obj)


dic = {'time': datetime.now()}
print(dic)
dic_str = json.dumps(dic, cls=DateEncoder)
print(dic_str)
可以成功转化.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容