logo

Gebruik jsonify() in plaats van json.dumps() in Flask

Hier zullen we de jsonify()-functie in het Flask-webframework voor Python begrijpen, die de uitvoer van een functie converteert naar een JSON-antwoordobject. Het is vergelijkbaar met de j zoon.dumps() functie in de Python-standaardbibliotheek, die een Python-object converteert naar een JSON-geformatteerde tekenreeks.

Wat is jsonify()

De functie jsonify() is handig in Flask-apps omdat deze automatisch de juiste antwoordheaders en het juiste inhoudstype voor JSON-reacties instelt, en u in staat stelt eenvoudig JSON-geformatteerde gegevens van uw route-handlers terug te sturen. Dit maakt het eenvoudiger en handiger om API's te maken die JSON-gegevens retourneren.



Syntaxis van de functie jsonify().

Deze functie neemt een of meer positionele argumenten op, die de gegevens vertegenwoordigen die moeten worden geconverteerd naar een JSON-antwoordobject, en een willekeurig aantal trefwoordargumenten, die worden gebruikt om het JSON-antwoordobject aan te passen.

jsonify(*args, **kwargs)

verschoven hoogte

Voorbeeld van jsonify() met zonder argument



U kunt jsonify() zonder argumenten gebruiken. In dit geval retourneert het een leeg JSON-antwoordobject met de standaardstatuscode 200 (OK) en het standaardinhoudstype application/json.

Python3






from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >return> jsonify()>

>

git afrekenen

>

Voorbeeld van jsonify() met argumenten

In dit voorbeeld roepen we jsonify() aan met een enkel positioneel argument (de lijst met gebruikersobjecten), evenals twee trefwoordargumenten met status en mimetype. Het statusargument wordt gebruikt om de HTTP-statuscode voor het antwoord in te stellen, en het mimetype-argument wordt gebruikt om het inhoudstype voor het antwoord in te stellen.

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 dit voorbeeld hebben we een Flask-app met een route die een lijst met gebruikersobjecten retourneert. Wanneer een client een verzoek indient voor deze route, wordt de functie get_users() uitgevoerd en wordt de lijst met gebruikersobjecten geconverteerd naar een JSON-antwoordobject met behulp van de functie jsonify(). Dit JSON-antwoordobject wordt vervolgens teruggestuurd naar de client.

Python3




indexvan lijst

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()>

>

>

converteer tekenreeks naar geheel getal

Uitgang:

Gebruik jsonify() in plaats van json.dumps() in Flask

jsonify() methode

json.dumps() methode in Flask

Als u daarentegen de json.dumps() functie, moet u de lijst met gebruikersobjecten zelf naar een JSON-geformatteerde tekenreeks converteren en vervolgens de juiste antwoordheaders instellen en het antwoord handmatig naar de client retourneren:

Het gebruik van jsonify() is over het algemeen eenvoudiger en handiger dan het gebruik van json.dumps(), dus het wordt aanbevolen om waar mogelijk jsonify() te gebruiken in Flask-apps.

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()>

>

>

Uitgang:

http://127.0.0.1:5000/api/users

prioriteit wachtrij java
Gebruik jsonify() in plaats van json.dumps() in Flask

Waarom jsonify() gebruiken in plaats van json.dumps()

Er zijn verschillende redenen waarom het wordt aanbevolen om de functie jsonify() te gebruiken in plaats van de functie json.dumps() in Flask-apps:

  • De jsonify() is handiger en gemakkelijker te gebruiken dan json.dumps(). jsonify() heeft een eenvoudige en intuïtieve syntaxis en verwerkt automatisch de details van het converteren van uw gegevens naar een JSON-antwoordobject en het terugsturen naar de client. Json.dumps() vereist daarentegen dat u deze details zelf afhandelt, wat tijdrovender en foutgevoeliger kan zijn.
  • De jsonify() stelt automatisch de juiste antwoordheaders en het juiste inhoudstype in voor JSON-reacties, terwijl json.dumps() dat niet doet. Dit betekent dat u de Content-Type header niet handmatig hoeft in te stellen op application/json wanneer u jsonify() gebruikt, maar dat u dit wel handmatig moet doen wanneer u json.dumps() gebruikt.
  • Met jsonify() kunt u eenvoudig JSON-geformatteerde gegevens van uw route-handlers retourneren, terwijl json.dumps() dat niet doet. Met jsonify() kunt u eenvoudig de gegevens retourneren die u wilt converteren naar een JSON-antwoordobject van uw route-handler, en jsonify() zorgt voor de rest. Met json.dumps() zou u de gegevens zelf naar een JSON-geformatteerde string moeten converteren en deze vervolgens retourneren als onderdeel van een Response-object.
  • Over het algemeen kan het gebruik van jsonify() in plaats van json.dumps() in Flask-apps het eenvoudiger en handiger maken om API's te maken die JSON-gegevens retourneren. Hiermee kunt u zich concentreren op de gegevens en logica van uw app, in plaats van dat u zich zorgen hoeft te maken over de details van de opmaak en het retourneren van JSON-antwoorden.