Hier werden wir die Funktion jsonify() im Flask-Webframework für Python verstehen, die die Ausgabe einer Funktion in ein JSON-Antwortobjekt konvertiert. Es ähnelt dem j son.dumps() Funktion in der Python-Standardbibliothek, die ein Python-Objekt in eine JSON-formatierte Zeichenfolge konvertiert.
Was ist jsonify()
Die Funktion jsonify() ist in Flask-Apps nützlich, da sie automatisch die richtigen Antwortheader und Inhaltstypen für JSON-Antworten festlegt und es Ihnen ermöglicht, problemlos JSON-formatierte Daten von Ihren Routenhandlern zurückzugeben. Dies macht es einfacher und bequemer, APIs zu erstellen, die JSON-Daten zurückgeben.
Syntax der jsonify()-Funktion
Diese Funktion übernimmt ein oder mehrere Positionsargumente, die die in ein JSON-Antwortobjekt zu konvertierenden Daten darstellen, sowie eine beliebige Anzahl von Schlüsselwortargumenten, die zum Anpassen des JSON-Antwortobjekts verwendet werden.
jsonify(*args, **kwargs)
Java-Vererbung
Beispiel für jsonify() mit ohne Argument
Sie können jsonify() ohne Argumente verwenden. In diesem Fall wird ein leeres JSON-Antwortobjekt mit dem Standardstatuscode 200 (OK) und dem Standardinhaltstyp application/json zurückgegeben.
Python3
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >return> jsonify()> |
>
>
Beispiel für jsonify() mit Argumenten
Java Hallo Welt
In diesem Beispiel rufen wir jsonify() mit einem einzelnen Positionsargument (der Liste der Benutzerobjekte) sowie zwei Schlüsselwortargumenten mit Status und Mimetyp auf. Das Statusargument wird verwendet, um den HTTP-Statuscode für die Antwort festzulegen, und das Mimetype-Argument wird verwendet, um den Inhaltstyp für die Antwort festzulegen.
Python3
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >users>=> [{>'id'>:>1>,>'username'>:>'Alice'>}, {>'id'>:>2>,>'username'>:>'Bob'>}]> >return> jsonify(users, status>=>200>, mimetype>=>'application/json'>)> |
>
>
jsonify()-Methode in Flask
In diesem Beispiel haben wir eine Flask-App mit einer Route, die eine Liste von Benutzerobjekten zurückgibt. Wenn ein Client eine Anfrage an diese Route stellt, wird die Funktion get_users() ausgeführt und die Liste der Benutzerobjekte mithilfe der Funktion jsonify() in ein JSON-Antwortobjekt konvertiert. Dieses JSON-Antwortobjekt wird dann an den Client zurückgesendet.
Python3
Rom
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/'>)> def> get_users():> >print>(>'Using jsonify'>)> >users>=> [{>'id'>:>1>,>'username'>:>'sweety'>},> >{>'id'>:>2>,>'username'>:>'pallavi'>}]> >return> jsonify({>'users'>: users})> if> __name__>=>=> '__main__'>:> >app.run()> |
>
>
Ausgabe:

jsonify()-Methode
json.dumps()-Methode in Flask
Im Gegensatz dazu, wenn Sie das verwenden würden json.dumps() Funktion müssten Sie die Liste der Benutzerobjekte selbst in eine JSON-formatierte Zeichenfolge konvertieren, dann die entsprechenden Antwortheader festlegen und die Antwort manuell an den Client zurücksenden:
Die Verwendung von jsonify() ist im Allgemeinen einfacher und bequemer als die Verwendung von json.dumps(). Daher wird empfohlen, in Flask-Apps nach Möglichkeit jsonify() zu verwenden.
Python3
from> flask>import> Flask, Response> import> json> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >users>=> [{>'id'>:>1>,>'username'>:>'sweety'>},> >{>'id'>:>2>,>'username'>:>'pandey'>}]> >response>=> Response(> >response>=>json.dumps(users),> >status>=>200>,> >mimetype>=>'application/json'> >)> >return> response> if> __name__>=>=> '__main__'>:> >app.run()> |
>
>
Ausgabe:
http://127.0.0.1:5000/api/users
Warum jsonify() anstelle von json.dumps() verwenden
Es gibt mehrere Gründe, warum es empfohlen wird, in Flask-Apps die Funktion jsonify() anstelle der Funktion json.dumps() zu verwenden:
Konvertieren Sie einen String in eine Ganzzahl
- jsonify() ist bequemer und einfacher zu verwenden als json.dumps(). jsonify() verfügt über eine einfache und intuitive Syntax und übernimmt automatisch die Details der Konvertierung Ihrer Daten in ein JSON-Antwortobjekt und deren Rückgabe an den Client. Im Gegensatz dazu müssen Sie bei json.dumps() diese Details selbst verwalten, was zeitaufwändiger und fehleranfälliger sein kann.
- jsonify() legt automatisch die richtigen Antwortheader und Inhaltstypen für JSON-Antworten fest, während json.dumps() dies nicht tut. Das bedeutet, dass Sie den Content-Type-Header nicht manuell auf application/json setzen müssen, wenn Sie jsonify() verwenden, sondern dass Sie dies manuell tun müssten, wenn Sie json.dumps() verwenden.
- Mit jsonify() können Sie problemlos JSON-formatierte Daten von Ihren Routenhandlern zurückgeben, während dies mit json.dumps() nicht möglich ist. Mit jsonify() können Sie einfach die Daten, die Sie in ein JSON-Antwortobjekt konvertieren möchten, von Ihrem Route-Handler zurückgeben, und jsonify() kümmert sich um den Rest. Mit json.dumps() müssten Sie die Daten selbst in einen JSON-formatierten String konvertieren und ihn dann als Teil eines Response-Objekts zurückgeben.
- Insgesamt kann die Verwendung von jsonify() anstelle von json.dumps() in Flask-Apps die Erstellung von APIs, die JSON-Daten zurückgeben, einfacher und bequemer machen. Dadurch können Sie sich auf die Daten und die Logik Ihrer App konzentrieren, anstatt sich um die Details der Formatierung und der Rückgabe von JSON-Antworten kümmern zu müssen.