由于在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))