logo

Använd jsonify() istället för json.dumps() i Flask

Här kommer vi att förstå funktionen jsonify() i webbramverket Flask för Python som konverterar utdata från en funktion till ett JSON-svarsobjekt. Det liknar j son.dumps() funktion i Python-standardbiblioteket, som konverterar ett Python-objekt till en JSON-formaterad sträng.

Vad är jsonify()

Funktionen jsonify() är användbar i Flask-appar eftersom den automatiskt ställer in rätt svarsrubriker och innehållstyp för JSON-svar, och låter dig enkelt returnera JSON-formaterad data från dina rutthanterare. Detta gör det enklare och bekvämare att skapa API:er som returnerar JSON-data.



Syntax för funktionen jsonify().

Den här funktionen tar in ett eller flera positionsargument, som representerar data som ska konverteras till ett JSON-svarsobjekt, och valfritt antal nyckelordsargument, som används för att anpassa JSON-svarsobjektet.

jsonify(*args, **kwargs)

Exempel på jsonify() med utan argument



Du kan använda jsonify() utan några argument, i det här fallet kommer det att returnera ett tomt JSON-svarsobjekt med en standardstatuskod på 200 (OK) och en standardinnehållstyp för applikation/json.

Python3






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

>

>

Exempel på jsonify() med argument

I det här exemplet anropar vi jsonify() med ett enda positionsargument (listan över användarobjekt), samt två nyckelordsargument med status och mimetyp. Statusargumentet används för att ställa in HTTP-statuskoden för svaret, och mimetype-argumentet används för att ställa in innehållstypen för svaret.

Python3


system.out.println



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

>

sträng till int-omvandlare

>

jsonify()-metoden i Flask

I det här exemplet har vi en Flask-app med en rutt som returnerar en lista med användarobjekt. När en klient gör en begäran till denna rutt exekveras funktionen get_users() och listan över användarobjekt konverteras till ett JSON-svarsobjekt med hjälp av jsonify()-funktionen. Detta JSON-svarsobjekt skickas sedan tillbaka till klienten.

Python3




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

>

>

konvertera sträng till heltal

Produktion:

Använd jsonify() istället för json.dumps() i Flask

jsonify() metod

json.dumps()-metoden i Flask

Om du däremot skulle använda json.dumps() funktion, skulle du behöva konvertera listan med användarobjekt till en JSON-formaterad sträng själv och sedan ställa in lämpliga svarsrubriker och returnera svaret till klienten manuellt:

Att använda jsonify() är i allmänhet enklare och bekvämare än att använda json.dumps(), så det rekommenderas att använda jsonify() när det är möjligt i Flask-appar.

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

>

>

Produktion:

http://127.0.0.1:5000/api/users

lär dig noggrannhetspoäng
Använd jsonify() istället för json.dumps() i Flask

Varför använda jsonify() istället för json.dumps()

Det finns flera anledningar till varför det rekommenderas att använda funktionen jsonify() istället för funktionen json.dumps() i Flask-appar:

  • Jsonify() är bekvämare och enklare att använda än json.dumps(). jsonify() har en enkel och intuitiv syntax, och den hanterar automatiskt detaljerna för att konvertera din data till ett JSON-svarsobjekt och returnera den till klienten. Däremot kräver json.dumps() att du hanterar dessa detaljer själv, vilket kan vara mer tidskrävande och felbenäget.
  • jsonify() ställer automatiskt in rätt svarsrubriker och innehållstyp för JSON-svar, medan json.dumps() inte gör det. Detta innebär att du inte manuellt behöver ställa in Content-Type-huvudet till application/json när du använder jsonify(), men du måste göra det manuellt när du använder json.dumps().
  • jsonify() låter dig enkelt returnera JSON-formaterad data från dina rutthanterare, medan json.dumps() inte gör det. Med jsonify() kan du helt enkelt returnera den data som du vill ska konverteras till ett JSON-svarsobjekt från din rutthanterare, och jsonify() tar hand om resten. Med json.dumps() måste du själv konvertera data till en JSON-formaterad sträng och sedan returnera den som en del av ett Response-objekt.
  • Sammantaget kan användning av jsonify() istället för json.dumps() i Flask-appar göra det enklare och bekvämare att skapa API:er som returnerar JSON-data. Det låter dig fokusera på data och logik i din app, snarare än att behöva oroa dig för detaljerna i formatering och returnerande JSON-svar.