Affichage JSON retourné à partir de Fiole d'une façon soignée
Je suis en création d'une API à l'aide de Flacon et avoir le code suivant:
@app.route('/<major>/')
def major_res(major):
course_list = list(client.db.course_col.find({"major": (major.encode("utf8", "ignore").upper())}))
return json.dumps(course_list, sort_keys=True, indent=4, default=json_util.default)
Lors de la visualisation de /csci/
dans le navigateur, la sortie ressemble à ceci:
[{ "course": "CSCI052", "description": "Fundamentals of Computer Science. A solid foundation in functional programming, procedural and data abstraction, recursion and problem-solving. Applications to key areas of computer science, including algorithms and complexity, computer architecture and organization, programming languages, finite automata and computability. This course serves the same role as HM 60 as a prerequisite for upper-division computer science courses at any of the Claremont Colleges. Prerequisite: 51.", "instructor": "Bull, Everett L.,, Jr.", "name": " Fundamentals of Computer Science", "number": 52, "school": "PO" }]
Comment puis-je retourner ce dictionnaire, de sorte que chaque clé et la valeur sont sur leur propre ligne?
OriginalL'auteur Aloke Desai | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
Flacon fournit
jsonify()
commodité:Ce sera le retour de la args de
jsonify
comme une représentation JSON, et, à l'inverse de votre code, vous fera parvenir le bonContent-Type
en-tête:application/json
. Prenez note de ce que les docs disent à propos du format:Réponses recevront non-jolie-imprimé JSON lorsqu'il n'est pas en mode debug. Cela ne devrait pas être un problème puisque JSON JavaScript pour la consommation n'a pas besoin d'être formaté (c'est juste extra, les données sont envoyées sur le réseau), et la plupart des outils format reçu JSON sur leur propre.
Si vous voulez l'utiliser
json.dumps()
, vous pouvez envoyer le bon type mime, en retournant unRéponse
aveccurrent_app.response_class()
.Pour en savoir plus sur la différence:
fiole.json
module docsAvant Flacon 1.0, JSON manipulation a été quelque peu différente.
jsonify
voudrais essayer de détecter si une demande a été AJAX et le retour de jolis imprimés si elle ne l'était pas; cela a été supprimé car il n'était pas fiable.jsonify
seulement permis dicts que l'objet de plus haut niveau pour des raisons de sécurité; ce n'est plus applicable dans les navigateurs modernes.OriginalL'auteur Bailey Parker
Si pour quelque raison vous avez besoin de monter
flask.jsonify
(ajout d'un codeur personnalisé par exemple), vous pouvez le faire avec la méthode suivante qui met en œuvre le correctif de sécurité @phpmycoder mentionné:Réponse:
Voir mon autre réponse pour un exemple en utilisant un json personnalisé codeur
courses = query.that.returns.list
etreturn jsonify(courses=courses)
OriginalL'auteur reubano