現在、Flask
はリストをjsonifyingするときにエラーを発生させます。
セキュリティ上の理由があるかもしれないことを知っています https://github.com/mitsuhiko/flask/issues/17 ですが、まだ次のようなJSONリストを返す方法が欲しいです:
[
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
の代わりに
{ 'results': [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]}
application/json
リクエストへの応答時。 Jsonifyを使用してFlaskにJSONリストを返すにはどうすればよいですか?
jsonify
は、Flask 0.10以下でこれを実行できないようにします セキュリティ上の理由により 。
とにかくそれを行うには、Python標準ライブラリでjson.dumps
を使用します。
できませんが、とにかくこうすることができます。 jQuery-File-Uploadにこれが必要でした
import json
# get this object
from flask import Response
#example data:
js = [ { "name" : filename, "size" : st.st_size ,
"url" : url_for('show', filename=filename)} ]
#then do this
return Response(json.dumps(js), mimetype='application/json')
これは私のために働いています。どのバージョンのFlaskを使用していますか?
from flask import jsonify
...
@app.route('/test/json')
def test_json():
list = [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
return jsonify(results = list)
Flaskのjsonify()
メソッドは、 this commit の時点でトップレベルの配列をシリアル化するようになり、Flask 0.11以降で利用可能になりました。
便宜上、Pythonリストを渡すことができます:jsonify([1,2,3])
または一連のargs
:jsonify(1,2,3)
を渡すことができます
両方ともJSONの最上位の配列にシリアル化されます:[1,2,3]
詳細はこちら: http://flask.pocoo.org/docs/dev/api/#flask.json.jsonify
解決、大騒ぎ。あなたは怠zyでjsonifyを使うことができます。あなたがする必要があるのはitems = [your list]を渡すことだけです。
ソリューションについてはこちらをご覧ください
flaskのリストは、jsonifyのように簡単にjsonifyできます。
from flask import Flask,jsonify
app = Flask(__name__)
tasks = [
{
'id':1,
'task':'this is first task'
},
{
'id':2,
'task':'this is another task'
}
]
@app.route('/app-name/api/v0.1/tasks',methods=['GET'])
def get_tasks():
return jsonify({'tasks':tasks}) #will return the json
if(__== '__main__'):
app.run(debug = True)
flaskでJSONリストを返す方法を文字通り検索していて、変数がリストであることを完全に確信している場合、簡単な方法は(wherebinは1と0のリストです):
return jsonify({'ans':bin}), 201
最後に、クライアントで次のようなものを取得します
{"ans":[0.0、0.0、1.0、1.0、0.0]}
josonifyは動作します。ただし、 'results'キーなしで配列を渡すだけの場合は、Pythonのjsonライブラリを使用できます。次の変換は私のために動作します。
import json
@app.route('/test/json')
def test_json():
list = [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
return json.dumps(list))