我有一个功能,分析一个CSV文件与熊猫和产生一个词典的摘要信息。我想从Flask视图返回结果作为响应。如何返回JSON响应?

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

当前回答

要返回JSON响应并设置状态码,可以使用make_response:

from flask import jsonify, make_response

@app.route('/summary')
def summary():
    d = make_summary()
    return make_response(jsonify(d), 200)

灵感来自这个评论在Flask问题跟踪器。

其他回答

要序列化一个对象,使用flask模块中的jsonify来jsonify对象,默认情况下字典会被序列化。另外,如果你处理的是文件,你总是可以使用make_response。

我喜欢这样:

    @app.route("/summary")
    def summary():
        responseBody = { "message": "bla bla bla", "summary": make_summary() }
        return make_response(jsonify(responseBody), 200)

jsonify序列化传递给JSON的数据。如果你想自己序列化数据,可以像jsonify那样,用status=200和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

要返回JSON响应并设置状态码,可以使用make_response:

from flask import jsonify, make_response

@app.route('/summary')
def summary():
    d = make_summary()
    return make_response(jsonify(d), 200)

灵感来自这个评论在Flask问题跟踪器。

如果是字典,flask可以直接返回(版本1.0.2)

def summary():
    d = make_summary()
    return d, 200