Actuellement, Flask
génère une erreur lors de la jsonification d'une liste.
Je sais qu'il peut y avoir des raisons de sécurité https://github.com/mitsuhiko/flask/issues/17 , mais j'aimerais quand même avoir un moyen de retourner une liste JSON comme celle-ci:
[
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
au lieu de
{ 'results': [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]}
en répondant à un application/json
demande. Comment puis-je retourner une liste JSON dans Flask en utilisant Jsonify?
jsonify
vous empêche de le faire dans Flask 0.10 et inférieur pour des raisons de sécurité .
Pour le faire quand même, utilisez simplement json.dumps
dans la bibliothèque standard Python).
Vous ne pouvez pas mais vous pouvez le faire quand même comme ça. J'avais besoin de cela pour 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')
Cela fonctionne pour moi. Quelle version de Flask utilisez-vous?
from flask import jsonify
...
@app.route('/test/json')
def test_json():
list = [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
return jsonify(results = list)
La méthode jsonify()
de Flask sérialise maintenant les tableaux de niveau supérieur à partir de this commit , disponible à partir de Flask 0.11 et ultérieur.
Pour plus de commodité, vous pouvez soit passer une liste Python: jsonify([1,2,3])
], soit une série de args
: jsonify(1,2,3)
Les deux seront sérialisés dans un tableau de niveau supérieur JSON: [1,2,3]
Détails ici: http://flask.pocoo.org/docs/dev/api/#flask.json.jsonify
Résolu, pas de chichi. Vous pouvez être fainéant et utiliser jsonify, tout ce que vous avez à faire est de transmettre items = [votre liste].
Jetez un coup d'oeil ici pour la solution
Une liste dans un flask peut être facilement jsonify en utilisant jsonify comme:
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)
Si vous recherchez littéralement le moyen de renvoyer un liste JSON dans flask et que vous êtes parfaitement sûr que votre variable est une liste, le moyen le plus simple est (where bin est une liste de 1 et de 0):
return jsonify({'ans':bin}), 201
Enfin, chez votre client, vous obtiendrez quelque chose comme:
{"ans": [0.0, 0.0, 1.0, 1.0, 0.0]}
josonify fonctionne ... mais si vous souhaitez simplement passer un tableau sans la clé "results", vous pouvez utiliser la bibliothèque json de python. La conversion suivante fonctionne pour moi ..
import json
@app.route('/test/json')
def test_json():
list = [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
return json.dumps(list))