Python3 报错 TypeError :Object of type datetime is not JSON serilizerable

由于在python中使用json.dumps()把json字典转成json字符串时引起的,因为json字典内部包含日期类型的数据,无法通过json.dumps()转成字符串。

解决方式有两种

方案1:

手动去处理字典内部的日期类型的数据(相较于下面一种,这种代码书写量可能会比较大,而且可能会书写多次,但也不失为一种很有效的办法)

方案2:

重写json内部的JSONDecoder类的default方法,达到在使用json.dumps时会判断内部是否有日期类型的数据,如有则格式化

from datetime import date, datetime
   
class DateEncoder(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)
 

使用时:

 return HttpResponse(json.dumps(rows, cls=DateEncoder))

猜你喜欢

转载自blog.csdn.net/weixin_45743420/article/details/106242415