出现的问题
最近在做一个项目,后端用的flask,数据通过return jsonify({})传到前端。做的时候发现前端接收到的数据格式不对,如下。
期望出现的格式:
不完美的解决方案
from flask import Flask
from flask.json import JSONEncoder
class MyJSONEncoder(JSONEncoder):
def default(self, o):
if isinstance(o, date):
return o.isoformat()
return super().default(o)
app = Flask(__name__)
app.json_encoder = MyJSONEncoder
前端确实能正确显示了,但是会出现以下warning:
'JSONEncoder' is deprecated and will be removed in Flask 2.3. Use 'Flask.json' to provide an alternate JSON implementation instead.
最终解决方案
在app.py中加入以下代码
from datetime import date, datetime
from flask.json.provider import DefaultJSONProvider
class UpdatedJSONProvider(DefaultJSONProvider):
def default(self, o):
if isinstance(o, date) or isinstance(o, datetime):
return o.isoformat(' ')
return super().default(o)
app = Flask(__name__)
app.json = UpdatedJSONProvider(app)