我正在使用 flask 和 gevent。我的功能看起来像:
@app.route('/index',methods=['POST'])
def index():
....
....
gevent.joinall(threads)
res = [t.value for t in threads]
return jsonify(**res)
生成的响应 (res) 是一个字典列表,如下所示:
[{u'token': u'146bf00b2cb96e6c425c2ab997637', u'a': u'aaa'},{u'token': u'146bf00b2cb96e6c425c2ab3f7417', u'a': u'bbb'}, {u'token': u'146bf00b2cb96e6c425c2ab3f5692', u'a': u'ccc'} ]
当我尝试对此进行 jsonify 时,我得到:
TypeError: jsonify() argument after ** must be a mapping, not list
我究竟做错了什么?
最佳答案
(**res)
期望 res
是一个单独的字典,它可以扩展为 jsonify
函数的关键字参数。例如
res = dict(a=1, b=2)
jsonify(**res)
# is the same as
jsonify(a=1, b=2)
在您的情况下,您不仅可以这样做:
jsonify(res)
编辑:实际上,我认为您需要将结果包装在 dict 中以返回它们。您可以使用 jsonify 将其快捷方式为:
jsonify(results=res)
给你
{
"results": [
{
"a": "aaa",
"token": "146bf00b2cb96e6c425c2ab997637"
},
{
"a": "bbb",
"token": "146bf00b2cb96e6c425c2ab3f7417"
},
{
"a": "ccc",
"token": "146bf00b2cb96e6c425c2ab3f5692"
}
]
}
关于python - TypeError : jsonify() argument after ** must be a mapping, 未列出使用 Flask 返回的 JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32364084/