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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值