100

現在Flask、リストをjson化するときにエラーが発生します。

セキュリティ上の理由がある可能性があることは知っていますがhttps://github.com/mitsuhiko/flask/issues/170、それでも次のようなJSONリストを返す方法が必要です。

[
    {'a': 1, 'b': 2},
    {'a': 5, 'b': 10}
]

それ以外の

{ 'results': [
    {'a': 1, 'b': 2},
    {'a': 5, 'b': 10}
]}

リクエストへの応答時application/json。Jsonifyを使用してFlaskでJSONリストを返すにはどうすればよいですか?

4

8 に答える 8

87

できませんが、とにかくこのようにすることができます。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')
于 2012-10-06T10:24:14.127 に答える
64

jsonifyセキュリティ上の理由から、Flask0.10以下ではこれを実行できません。

とにかくそれを行うにjson.dumpsは、Python標準ライブラリで使用するだけです。

http://docs.python.org/library/json.html#json.dumps

于 2012-09-16T01:15:32.970 に答える
20

これは私のために働いています。どのバージョンの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)
于 2012-09-15T08:29:58.117 に答える
12

Flaskのメソッドは、このコミットの時点で、Flask0.11以降で使用可能なjsonify()トップレベルの配列をシリアル化するようになりました。

便宜上、Pythonリストを渡すかjsonify([1,2,3]) 、一連のargs:を渡すことができます。jsonify(1,2,3)

どちらもJSONトップレベル配列にシリアル化されます。[1,2,3]

詳細はこちら: http: //flask.pocoo.org/docs/dev/api/#flask.json.jsonify

于 2016-01-25T19:09:46.100 に答える
7

解決しました、大騒ぎはありません。あなたは怠惰でjsonifyを使うことができます、あなたがする必要があるのはitems=[あなたのリスト]を渡すことだけです。

解決策についてはこちらをご覧ください

https://github.com/mitsuhiko/flask/issues/510

于 2014-10-31T17:17:02.337 に答える
5

フラスコ内のリストは、次のように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(__name__ == '__main__'):
    app.run(debug = True)
于 2016-03-12T14:15:39.877 に答える
1

フラスコ内でJSONリストを返す方法を文字通り検索していて、変数がリストであることを完全に確信している場合、簡単な方法は次のとおりです(binは1と0のリストです)。

   return jsonify({'ans':bin}), 201

最後に、クライアントで次のようなものを取得します

{"ans":[0.0、0.0、1.0、1.0、0.0]}

于 2017-07-06T06:04:21.310 に答える
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))
于 2014-01-07T14:42:15.330 に答える