Return JSON response from Flask view
As of Flask 1.1.0 a view can directly return a Python dict and Flask will call jsonify
automatically.
@app.route("/summary")
def summary():
d = make_summary()
return d
If your Flask version is less than 1.1.0 or to return a different JSON-serializable object, import and use jsonify
.
from flask import jsonify
@app.route("/summary")
def summary():
d = make_summary()
return jsonify(d)
Pass keyword arguments to flask.jsonify
and they will be output as a JSON object.
@app.route('/_get_current_user')
def get_current_user():
return jsonify(
username=g.user.username,
email=g.user.email,
id=g.user.id
)
{
"username": "admin",
"email": "admin@localhost",
"id": 42
}
If you already have a dict, you can pass it directly as jsonify(d)
.
jsonify
serializes the data you pass it to JSON. If you want to serialize the data yourself, do what jsonify
does by building a response with status=200
and mimetype='application/json'
.
from flask import json
@app.route('/summary')
def summary():
data = make_summary()
response = app.response_class(
response=json.dumps(data),
status=200,
mimetype='application/json'
)
return response