Eu tenho uma função que analisa um arquivo CSV com o Pandas e produz um ditado com informações resumidas. Desejo retornar os resultados como resposta de uma exibição do Flask. Como faço para retornar uma resposta JSON?
Passe os dados de resumo para a jsonifyfunção, que retorna uma resposta JSON.
No Flask 0.11, você pode transmitir qualquer tipo de serialização JSON, não apenas dict, como o objeto de nível superior.
A partir do Flask 1.1.0 , agora você pode retornar diretamente um dict python, e ele será automaticamente jsonificado pelo Flask.
— Adrien Ball
jsonifyserializa os dados que você os passa para JSON. Se você deseja serializar os dados por conta própria, faça o que jsonifyé construindo uma resposta com status=200e mimetype='application/json'.
Passe argumentos de palavra-chave para flask.jsonifye eles serão exibidos como um objeto JSON.
Se você já tem um ditado, pode passá-lo diretamente como jsonify(d).
Conforme as notas de versão 1.1.0 , o Flask permite retornar um dicionário a partir de uma função de visualização. Semelhante a como retornar uma string produzirá uma resposta de texto / html, retornar um dict chamará jsonify para produzir uma resposta de application / json,
— CodeMantle
Se você não quiser usar jsonifypor algum motivo, pode fazer o que faz manualmente. Ligue flask.json.dumpspara criar dados JSON e, em seguida, retorne uma resposta com o application/jsontipo de conteúdo.
flask.jsoné diferente do jsonmódulo embutido . Ele usará o simplejsonmódulo mais rápido , se disponível, e permite várias integrações com o aplicativo Flask.
Se você deseja analisar um arquivo carregado pelo usuário, o Início rápido do Flask mostra como obter arquivos dos usuários e acessá-los. Obtenha o arquivo request.filese passe-o para a função de resumo.
Substitua a 'data'chave por request.filespelo nome da entrada do arquivo em seu formulário HTML.
— teechap
Para retornar uma resposta JSON e definir um código de status, você pode usar make_response:
Inspiração retirada deste comentário no rastreador de problemas do Flask.
A partir da versão 1.1.0 Flask, se uma visualização retornar um ditado, ela será transformada em uma resposta JSON .
Eu uso um decorador para retornar o resultado de jsonfiy. Eu acho que é mais legível quando uma visão tem vários retornos. Isso não oferece suporte ao retorno de uma tupla content, status, mas lida com o retorno de status de erro app.errorhandler.
Antes do Flask 0.11, jsonfiynão era permitido retornar uma matriz diretamente. Em vez disso, passe a lista como um argumento de palavra-chave.
— mania_device
No Flask 1.1, se você retornar um dicionário, ele será automaticamente convertido em JSON. Então, se make_summary()retornar um dicionário, você pode
O SO que pergunta sobre a inclusão do código de status foi fechado como duplicado para este. Portanto, para também responder a essa pergunta, você pode incluir o código de status retornando uma tupla do formulário (dict, int). O dicté convertido para JSON e intserá o Código de Status HTTP. Sem nenhuma entrada, o Status é o padrão 200. Portanto, no exemplo acima, o código seria 200. No exemplo abaixo, ele é alterado para 201.
Você pode verificar o código de status usando
se for um dict, o balão pode devolvê-lo diretamente (Versão 1.0.2)
— c8999c 3f964f64
"" " Usando a vista de base da classe Flask " ""
Frasco 1.1.x
agora a solicitação de suporte do Flask retorna com o json diretamente, o jsonify não é mais necessário
para obter mais informações, leia aqui https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb e https://github.com/pallets/flask/pull/3111