如何正确使用Flask的jsonify()方法返回JSON格式数据?

4

我在使用flask.jsonify函数将字典输入输出为格式化的json响应时遇到了一些问题,具体信息可以参考这里

我的代码好像返回了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表示?


json.dumps 函数有什么问题? - OneCricketeer
@cricket_007 我想要以漂亮的格式显示JSON,而json.dumps无法做到。 - thevises
这里的 dict 是什么?JSON 数据应该从哪里获取? - Daniel Roseman
@DanielRoseman 这个字典是通过调用另一个函数编译的OrderedDict,该函数从同一页上的表单中获取参数。以下是字典的示例:OrderedDict([('name','Example'),('reference_ranges',[OrderedDict([('descriptions',['Follicular']),('ranges',[OrderedDict([('min',22.0),('max',85.0),('units','ng/dL ')]),OrderedDict([('tag','SI'),('min',0.7),('max',2.5),('units','mmol/L')])])])])] - thevises
不确定它们是否可以一起呈现。我在手机上,所以无法测试任何东西。您可能需要浏览文档,找到引起注意的内容。http://flask.pocoo.org/docs/0.10/api/#module-flask.json - OneCricketeer
显示剩余2条评论
1个回答

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://dev59.com/82sz5IYBdhLWcg3wbHLG#13172658

目标是让JSON格式化输出。我该如何使用json.dumps实现呢? - thevises
我已更新我的答案。这应该在模板中提供一种漂亮打印的JSON,但当然不带颜色。您可以更改缩进以获得更多或更少的缩进。 - Velin Georgiev
要使其着色,有许多JavaScript库可以提供帮助。 - Ryan O'Donnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接