如何正确使用Flask的jsonify()来返回json?

时间:2016-01-02 20:58:39

标签: python json flask

我在使用flask.jsonify函数从字典输入中输出格式化的json响应时遇到一些麻烦,如here.

中所述

我的代码似乎是返回Response对象,而不是我想要的格式化json对象。

我有

@app.route('/rparser', methods=['GET', 'POST'])
def rparser():
    form = ParserForm(request.form)
    if request.method=='POST':
        result = jsonify(**dict)
        return render_template('rparser.html', form=form, result=result)
    else:
        return render_template('rparser.html', form=form)

其中dict是调用函数返回的字典对象。

在我的模板中,我有:

(form up here)

{% if result %}
    {{ result }}
{% endif %}

显示:

  

响应135字节[200 OK]

我如何让它返回我正在寻找的json表示?

1 个答案:

答案 0 :(得分:1)

您可以像这样使用json.dumps:

@app.route('/')
def home():
return render_template(
    'index.html',
    title='Home Page',
    result=json.dumps({"a":[{"o":1},{"o":2}]}, sort_keys = False, indent = 2)
)

并在模板中将其格式化为:

{% if result %}
   <pre>{{ result }}</pre>
{% endif %}

如果这符合您的期望。我认为jsonify用于提供http.response数据,而不是模板的上下文数据。

在这里查看jsonify:https://stackoverflow.com/a/13172658/1307985