使用sanic开发web应用时,通常需要配合数据库,那就不可避免的要使用DateTimeField类型的字段,而datetime不是标准的数据类型, 无法被json序列化,因此
sanic 的response.json() 返回数据时,如果models字段有datetime类型,则会抛出 “Object of type datetime is not JSON serializable” 异常。到这应该有三百个字了吧,太难了。
解决办法:
重写JSONENcode的default方法
import json
from datetime import date, datetime
class JsonDateTime(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)使用时,只需要指定cls=JsonDateTime即可:
def ResponseSuccess(code, data):
return json({
'code': code,
'msg': message.get(code),
'data': data
}, cls=JsonDateTime) | 留言与评论(共有 0 条评论) “” |