开发者问题收集

从 Flask 视图返回 JSON 响应

2012-10-26
913643

我有一个函数,它使用 Pandas 分析 CSV 文件并生成包含摘要信息的字典。我想将结果作为 Flask 视图的响应返回。如何返回 JSON 响应?

@app.route("/summary")
def summary():
    d = make_summary()
    # send it back as json
3个回答

视图可以直接返回 Python 字典或列表,Flask 将自动调用 jsonify

@app.route("/summary")
def summary():
    d = make_summary()
    return d

对于旧版本的 Flask,或要返回不同的 JSON 可序列化对象,请导入并使用 jsonify

from flask import jsonify

@app.route("/summary")
def summary():
    d = make_summary()
    return jsonify(d)
codegeek
2012-10-26

jsonify 将您传递给它的数据序列化为 JSON。如果您想自己序列化数据,请执行 jsonify 的操作,即使用 status=200mimetype='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
scls
2014-11-16

将关键字参数传递给 flask.jsonify ,它们将作为 JSON 对象输出。

@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
}

如果您已经有一个字典,您可以直接将其作为 jsonify(d) 传递。

zengr
2012-10-26