Flask JSON auf eine ordentliche Weise anzeigen

8

Ich erstelle eine API aus einer mongodb-Datenbank mit Flask und habe den folgenden Code:

%Vor%

Was beim Aufruf mit dem CSCI-Major zurückkommt:

  

[{"Kurs": "CSCI052", "description": "Grundlagen der Informatik. Eine solide Grundlage in der funktionalen Programmierung, Verfahrens- und Datenabstraktion, Rekursion und Problemlösung. Anwendungen in Schlüsselbereichen der Informatik, einschließlich Algorithmen und Komplexität, Computerarchitektur und -organisation, Programmiersprachen, endliche Automaten und Berechenbarkeit.Dieser Kurs dient der gleichen Rolle wie HM 60 als Voraussetzung für Informatik-Kurse der oberen Klasse an einem der Claremont Colleges. Voraussetzung: 51. "," Lehrer ":" Bull, Everett L. ,, Jr. "," Name ":" Grundlagen der Informatik "," Nummer ": 52," Schule ":" PO "}]

Wie gebe ich dieses Wörterbuch zurück, so dass sich jeder Schlüssel und Wert in einer eigenen Zeile befindet?

    
Aloke Desai 04.06.2013, 02:32
quelle

2 Antworten

13

Flask bietet jsonify() als Komfort:

%Vor%

Dies wird die Kwargs von jsonify als eine schön formatierte JSON-Antwort zurückgeben und im Gegensatz zu Ihrem Code das richtige Content-Type header: application/json .

senden

Beachten Sie jedoch, was die Dokumente dazu sagen:

  

Die Antwort dieser Funktion wird ziemlich gedruckt, wenn sie nicht mit X-Requested-With: XMLHttpRequest angefordert wurde, um das Debugging zu vereinfachen, es sei denn, der Konfigurationsparameter JSONIFY_PRETTYPRINT_REGULAR ist auf false gesetzt.

Dies bedeutet, dass Ajax-Antworten immer nicht-prettyprinted JSON erhalten (da die Same Origin-Richtlinie es unmöglich macht, X-Requested-With zu deaktivieren). Aber ich denke, das wird kein großes Problem sein, da JSON für JS-Verbrauch nicht formatiert werden muss (das sind nur zusätzliche Daten, die über die Leitung gesendet werden).

Wenn Sie json.dumps() (nicht-hübsch gedruckt) weiterhin verwenden möchten, können Sie den richtigen MIME-Typ senden, indem Sie ein flask.Response sollten Sie jedoch die Auswirkungen auf die Sicherheit dieses :

%Vor%

Für mehr über den Unterschied:

Bailey Parker 18.07.2013, 05:18
quelle
0

Wenn Sie aus irgendeinem Grund flask.jsonify (z. B. einen benutzerdefinierten Encoder hinzufügen) übersteuern müssen, können Sie dies mit der folgenden Methode tun, die den erwähnten Sicherheitsfix @phpmycoder implementiert:

%Vor%

Antwort:

%Vor%

Siehe meine andere Antwort für ein Beispiel mit einem benutzerdefinierten json-Encoder

    
reubano 27.04.2014 07:32
quelle