Ответ 1
jsonify
предотвращает выполнение этого из соображений безопасности.
Чтобы это сделать, просто используйте json.dumps
в стандартной библиотеке Python.
В настоящее время Flask
вызывает ошибку при jsonizing списке.
Я знаю, что могут быть причины безопасности 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
. Как я могу вернуть список JSON в Flask с помощью Jsonify?
jsonify
предотвращает выполнение этого из соображений безопасности.
Чтобы это сделать, просто используйте json.dumps
в стандартной библиотеке Python.
Вы не можете, но можете сделать это в любом случае. Мне нужно это для 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 jsonify
...
@app.route('/test/json')
def test_json():
list = [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
return jsonify(results = list)
Теперь метод Flask jsonify()
сериализует массивы верхнего уровня с этот коммит, доступный в 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
Решено, нет суеты. Вы можете быть ленивым и использовать jsonify, все, что вам нужно сделать, это передать элементы = [ваш список].
Взгляните сюда на решение
Список в колбе можно легко 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)
josonify works..but, если вы собираетесь просто передать массив без ключа "results", вы можете использовать библиотеку json из python. Для меня работает следующее преобразование.
import json
@app.route('/test/json')
def test_json():
list = [
{'a': 1, 'b': 2},
{'a': 5, 'b': 10}
]
return json.dumps(list))
Если вы в буквальном смысле пытаетесь вернуть список JSON в колбе, и вы совершенно уверены, что ваша переменная является списком, тогда простой способ (где bin - список из 1 и 0 ):
return jsonify({'ans':bin}), 201
Наконец, в вашем клиенте вы получите что-то вроде
{ "ans": [0.0, 0.0, 1.0, 1.0, 0.0]}