从数据库读取数据然后转为json时遇到:
TypeError: Object of type date is not JSON serializable
TypeError: Object of type Decimal is not JSON serializable
等错误,发现需要在json.dumps()时传入一个参数,如下
class DateEncoder(json.JSONEncoder):
def default(self, obj):
# 处理返回数据中有date类型的数据
if isinstance(obj, datetime.date):
return obj.strftime("%Y-%m-%d")
# 处理返回数据中有datetime类型的数据
elif isinstance(obj, datetime.datetime):
return obj.strftime("%Y-%m-%d %H:%M:%S")
# 处理返回数据中有decimal类型的数据
elif isinstance(obj, decimal.Decimal):
return float(obj)
else:
return json.JSONEncoder.default(self, obj)
json.dumps(data, ensure_ascii=False, cls=DateEncoder).encode("utf-8")