341 Stimmen

json.dumps vs flask.jsonify

Ich bin mir nicht sicher, ob ich den Zweck der flask.jsonify Methode. Ich versuche, daraus einen JSON-String zu erstellen:

data = {"id": str(album.id), "title": album.title}

aber was ich mit json.dumps unterscheidet sich von dem, was ich mit flask.jsonify .

json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}

Offensichtlich muss ich ein Ergebnis erzielen, das mehr dem entspricht, was ich json.dumps zurück. Was mache ich falsch?

446voto

Kenneth Wilke Punkte 4541

En jsonify() Funktion in Flask gibt eine flask.Response() Objekt, das bereits den entsprechenden Content-Type-Header "application/json" für die Verwendung mit json-Antworten hat. Während das json.dumps() Methode nur eine kodierte Zeichenkette zurück, was ein manuelles Hinzufügen des MIME-Typ-Headers erfordern würde.

Sehen Sie mehr über die jsonify() Funktion aquí für eine vollständige Referenz.

Bearbeiten: Außerdem habe ich festgestellt, dass jsonify() behandelt kwargs oder Wörterbücher, während json.dumps() unterstützt zusätzlich Listen und andere.

98voto

mikerobi Punkte 19791

Das können Sie tun:

flask.jsonify(**data)

ou

flask.jsonify(id=str(album.id), title=album.title)

91voto

Michael Ekoka Punkte 17537

Dies ist flask.jsonify()

def jsonify(*args, **kwargs):
    if __debug__:
        _assert_have_json()
    return current_app.response_class(json.dumps(dict(*args, **kwargs),
        indent=None if request.is_xhr else 2), mimetype='application/json')

En json verwendete Modul ist entweder simplejson o json in dieser Reihenfolge. current_app ist ein Verweis auf den Flask() Objekt, d.h. Ihre Anwendung. response_class() ist ein Verweis auf den Response() Klasse.

53voto

chaiyachaiya Punkte 2467

Die Entscheidung für das eine oder andere hängt davon ab, was Sie vorhaben. Soweit ich das verstanden habe:

  • jsonify wäre nützlich, wenn Sie eine API erstellen, die jemand abfragen würde und als Antwort json erwartet. Z.B.: Die REST-API von Github könnte diese Methode verwenden, um Ihre Anfrage zu beantworten.

  • Abfälle geht es eher darum, Daten/Python-Objekte in json zu formatieren und innerhalb Ihrer Anwendung zu bearbeiten. Zum Beispiel muss ich ein Objekt an meine Darstellungsschicht übergeben, wo einige Javascript Grafik angezeigt wird. Sie füttern Javascript mit dem Json von Dumps generiert.

-2voto

Govind Kelkar Punkte 11

Berücksichtigen.

data={'fld':'hello'}

jetzt

jsonify(data)

ergibt {'fld':'hello'} und

json.dumps(data)

gibt

"<html><body><p>{'fld':'hello'}</p></body></html>"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X