Anzeige JSON zurückgegeben von der Flasche in eine saubere Art und Weise
Ich bin erstellen einer API mit Flask und habe den folgenden code ein:
@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)
Beim betrachten /csci/
im browser die Ausgabe sieht wie folgt aus:
[{ "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" }]
Wie kann ich wieder dieses Wörterbuch, so dass jeweils key und value werden auf Ihre eigene Linie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kolben bietet
jsonify()
als Bequemlichkeit:Diese wird wieder die Argumente von
jsonify
als JSON-Repräsentation, und im Gegensatz zu Ihrem code senden, um das richtigeContent-Type
header:application/json
. Nehmen Sie Notiz von dem, was die docs sagen über das format:Antworten erhalten die nicht-pretty-printed JSON-wenn nicht im debug-Modus. Dies sollte nicht ein problem sein, da JSON für JavaScript-Verbrauch sollte nicht formatiert werden müssen (das ist nur zusätzliche Daten werden über die Leitung gesendet), und die meisten tools format empfangene JSON auf Ihrem eigenen.
Wenn Sie möchten, um noch
json.dumps()
haben, können Sie senden Sie die korrekte mimetype durch die Rücksendung einesAntwort
mitcurrent_app.response_class()
.Mehr auf den Unterschied:
Kolben.json
- Modul docsVor Flask 1.0, JSON-Handhabung war etwas anders.
jsonify
würde versuchen zu erkennen, ob ein entsprechender Antrag wurde AJAX und zurück ziemlich gedruckt, wenn es nicht war; dieser wurde entfernt, weil es war unzuverlässig.jsonify
nur erlaubt dicts als der top-level-Objekt für Sicherheitsgründen; dies ist nicht mehr anwendbar, die in modernen Browsern.Wenn aus irgendeinem Grund Sie brauchen, um über-ride
flask.jsonify
(hinzufügen einer benutzerdefinierten encoder zum Beispiel), können Sie dies mit der folgenden Methode, implementiert das security fix @phpmycoder erwähnt:Antwort:
Siehe meine andere Antwort für ein Beispiel der Verwendung einer eigenen json-encoder
courses = query.that.returns.list
undreturn jsonify(courses=courses)