TypeError :Object of type 'datetime' is not JSON serilizerable

这个问题是由于在python中使用json.dumps()把json字典转成json字符串时引起的,因为json

字典内部包含日期类型的数据,无法通过json.dumps()转成字符串。

解决方式有两种:

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

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

  

import json  
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))

  

posted @ 2020-01-10 09:14  林三点  阅读(635)  评论(0编辑  收藏  举报