我有一个功能,分析一个CSV文件与熊猫和产生一个词典的摘要信息。我想从Flask视图返回结果作为响应。如何返回JSON响应?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
我有一个功能,分析一个CSV文件与熊猫和产生一个词典的摘要信息。我想从Flask视图返回结果作为响应。如何返回JSON响应?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
当前回答
1.1瓶。x支持在不调用jsonify的情况下返回JSON字典。如果你想返回dict以外的东西,你仍然需要调用jsonify。
@app.route("/")
def index():
return {
"api_stuff": "values",
}
等于
@app.route("/")
def index():
return jsonify({
"api_stuff": "values",
})
查看添加了这个的拉请求:https://github.com/pallets/flask/pull/3111
其他回答
1.1瓶。x支持在不调用jsonify的情况下返回JSON字典。如果你想返回dict以外的东西,你仍然需要调用jsonify。
@app.route("/")
def index():
return {
"api_stuff": "values",
}
等于
@app.route("/")
def index():
return jsonify({
"api_stuff": "values",
})
查看添加了这个的拉请求:https://github.com/pallets/flask/pull/3111
我喜欢这样:
@app.route("/summary")
def summary():
responseBody = { "message": "bla bla bla", "summary": make_summary() }
return make_response(jsonify(responseBody), 200)
向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)传递。
视图可以直接返回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)
当使用Flask的基于类的视图时,答案是一样的。
from flask import Flask, request, jsonify
from flask.views import MethodView
app = Flask(__name__)
class Summary(MethodView):
def get(self):
d = make_summary()
return jsonify(d)
app.add_url_rule('/summary/', view_func=Summary.as_view('summary'))