从数据库读取数据然后转为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")
本文介绍如何在将数据库数据转换为JSON时,通过自定义DateEncoder处理datetime和decimal类型,确保数据可序列化。通过示例代码演示如何使用strftime和float转换这些对象。
1万+





