logo

Brug jsonify() i stedet for json.dumps() i Flask

Her vil vi forstå funktionen jsonify() i Flask-webframeworket for Python, der konverterer output fra en funktion til et JSON-svarobjekt. Det ligner j søn.dumps() funktion i Python-standardbiblioteket, som konverterer et Python-objekt til en JSON-formateret streng.

Hvad er jsonify()

Funktionen jsonify() er nyttig i Flask-apps, fordi den automatisk indstiller de korrekte svaroverskrifter og indholdstype for JSON-svar, og giver dig mulighed for nemt at returnere JSON-formaterede data fra dine rutebehandlere. Dette gør det nemmere og mere bekvemt at oprette API'er, der returnerer JSON-data.



Syntaks for funktionen jsonify().

Denne funktion tager et eller flere positionsargumenter ind, som repræsenterer de data, der skal konverteres til et JSON-svarobjekt, og et hvilket som helst antal nøgleordsargumenter, som bruges til at tilpasse JSON-svarobjektet.

jsonify(*args, **kwargs)

Eksempel på jsonify() med uden argument



Du kan bruge jsonify() uden nogen argumenter, i dette tilfælde vil det returnere et tomt JSON-svarobjekt med en standardstatuskode på 200 (OK) og en standardindholdstype for applikation/json.

Python3



array java




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

>

>

Eksempel på jsonify() med argumenter

I dette eksempel kalder vi jsonify() med et enkelt positionsargument (listen over brugerobjekter), samt to søgeordsargumenter med status og mimetype. Statusargumentet bruges til at indstille HTTP-statuskoden for svaret, og mimetype-argumentet bruges til at indstille indholdstypen for svaret.

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

tilføjelse til array java
>

>

jsonify()-metoden i Flask

I dette eksempel har vi en Flask-app med en rute, der returnerer en liste over brugerobjekter. Når en klient foretager en anmodning til denne rute, udføres funktionen get_users() og listen over brugerobjekter konverteres til et JSON-svarobjekt ved hjælp af jsonify()-funktionen. Dette JSON-svarobjekt sendes derefter tilbage til 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()>

>

>

Produktion:

Brug jsonify() i stedet for json.dumps() i Flask

jsonify() metode

json.dumps()-metoden i Flask

I modsætning hertil, hvis du skulle bruge json.dumps() funktion, skal du selv konvertere listen over brugerobjekter til en JSON-formateret streng og derefter indstille de passende svarheadere og returnere svaret til klienten manuelt:

At bruge jsonify() er generelt nemmere og mere bekvemt end at bruge json.dumps(), så det anbefales at bruge jsonify() når det er muligt i 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()>

>

hvis ved rudyard kipling resumé
>

Produktion:

http://127.0.0.1:5000/api/brugere

Brug jsonify() i stedet for json.dumps() i Flask

Hvorfor bruge jsonify() i stedet for json.dumps()

Der er flere grunde til, at det anbefales at bruge funktionen jsonify() i stedet for funktionen json.dumps() i Flask-apps:

  • jsonify() er mere praktisk og lettere at bruge end json.dumps(). jsonify() har en enkel og intuitiv syntaks, og den håndterer automatisk detaljerne om at konvertere dine data til et JSON-svarobjekt og returnere det til klienten. I modsætning hertil kræver json.dumps(), at du selv håndterer disse detaljer, hvilket kan være mere tidskrævende og udsat for fejl.
  • jsonify() indstiller automatisk de korrekte svaroverskrifter og indholdstype for JSON-svar, mens json.dumps() ikke gør det. Dette betyder, at du ikke manuelt skal indstille Content-Type-headeren til application/json, når du bruger jsonify(), men du skal gøre det manuelt, når du bruger json.dumps().
  • jsonify() giver dig mulighed for nemt at returnere JSON-formaterede data fra dine rutehandlere, mens json.dumps() ikke gør det. Med jsonify() kan du blot returnere de data, som du ønsker skal konverteres til et JSON-svarobjekt fra din rutehandler, og jsonify() tager sig af resten. Med json.dumps() skal du selv konvertere dataene til en JSON-formateret streng og derefter returnere den som en del af et Response-objekt.
  • Samlet set kan brug af jsonify() i stedet for json.dumps() i Flask-apps gøre det nemmere og mere bekvemt at oprette API'er, der returnerer JSON-data. Det giver dig mulighed for at fokusere på dataene og logikken i din app, i stedet for at skulle bekymre dig om detaljerne i formatering og returnering af JSON-svar.