flask.jsonify在调用dumps后,如果数据里有日期类型的, 就会把时间减去8小时,从UTC转换成GMT,为了解决这个问题, 就重写了json.JSONEncoder的default方法, 直接将date类型的数据转换成字符串即可,然后在序列化的时候, 指明序列化类名就可以了
class MYJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
if isinstance(obj, date):
return obj.strftime('%Y-%m-%d')
return super(MYJSONEncoder, self).default(obj)
# data就是需要返回的且含有date类型的数据
ret = eval(json.dumps(data, cls=MYJSONEncoder))
return make_response(jsonify(ret), 200)