Her vil vi forstå jsonify()-funksjonen i Flask-nettrammeverket for Python som konverterer utdata fra en funksjon til et JSON-responsobjekt. Det ligner på j son.dumps() funksjon i Python-standardbiblioteket, som konverterer et Python-objekt til en JSON-formatert streng.
Hva er jsonify()
Funksjonen jsonify() er nyttig i Flask-apper fordi den automatisk setter riktige svarhoder og innholdstype for JSON-svar, og lar deg enkelt returnere JSON-formaterte data fra rutebehandlerne dine. Dette gjør det enklere og mer praktisk å lage APIer som returnerer JSON-data.
Syntaks for jsonify()-funksjonen
Denne funksjonen tar inn ett eller flere posisjonsargumenter, som representerer dataene som skal konverteres til et JSON-svarobjekt, og et hvilket som helst antall nøkkelordargumenter, som brukes til å tilpasse JSON-svarobjektet.
jsonify(*args, **kwargs)
Eksempel på jsonify() med uten argument
Du kan bruke jsonify() uten noen argumenter, i dette tilfellet vil det returnere et tomt JSON-svarobjekt med en standard statuskode på 200 (OK) og en standard innholdstype for applikasjon/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 eksemplet kaller vi jsonify() med et enkelt posisjonsargument (listen over brukerobjekter), samt to nøkkelordargumenter med status og mimetype. Statusargumentet brukes til å angi HTTP-statuskoden for svaret, og mimetype-argumentet brukes til å angi innholdstypen 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'>)> |
legge til array java
>
>
jsonify()-metoden i Flask
I dette eksemplet har vi en Flask-app med en rute som returnerer en liste over brukerobjekter. Når en klient sender en forespørsel til denne ruten, utføres get_users()-funksjonen og listen over brukerobjekter konverteres til et JSON-svarobjekt ved å bruke jsonify()-funksjonen. Dette JSON-svarobjektet sendes deretter tilbake 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()> |
>
>
Produksjon:

jsonify()-metoden
json.dumps()-metoden i Flask
I motsetning, hvis du skulle bruke json.dumps() funksjon, må du selv konvertere listen over brukerobjekter til en JSON-formatert streng, og deretter angi de riktige svarhodene og returnere svaret til klienten manuelt:
Å bruke jsonify() er generelt enklere og mer praktisk enn å bruke json.dumps(), så det anbefales å bruke jsonify() når det er mulig i Flask-apper.
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()> |
>
powershell flerlinjekommentar
>
Produksjon:
http://127.0.0.1:5000/api/users
Hvorfor bruke jsonify() i stedet for json.dumps()
Det er flere grunner til at det anbefales å bruke jsonify()-funksjonen i stedet for json.dumps()-funksjonen i Flask-apper:
- jsonify() er mer praktisk og enklere å bruke enn json.dumps(). jsonify() har en enkel og intuitiv syntaks, og den håndterer automatisk detaljene for å konvertere dataene dine til et JSON-svarobjekt og returnere det til klienten. Derimot krever json.dumps() at du håndterer disse detaljene selv, noe som kan være mer tidkrevende og utsatt for feil.
- jsonify() setter automatisk de riktige svarhodene og innholdstypen for JSON-svar, mens json.dumps() ikke gjør det. Dette betyr at du ikke trenger å manuelt sette Content-Type-overskriften til application/json når du bruker jsonify(), men du må gjøre det manuelt når du bruker json.dumps().
- jsonify() lar deg enkelt returnere JSON-formaterte data fra rutebehandlerne dine, mens json.dumps() ikke gjør det. Med jsonify() kan du ganske enkelt returnere dataene du ønsker skal konverteres til et JSON-svarobjekt fra rutebehandleren din, og jsonify() tar seg av resten. Med json.dumps(), må du selv konvertere dataene til en JSON-formatert streng og deretter returnere den som en del av et Response-objekt.
- Totalt sett kan bruk av jsonify() i stedet for json.dumps() i Flask-apper gjøre det enklere og mer praktisk å lage APIer som returnerer JSON-data. Den lar deg fokusere på dataene og logikken til appen din, i stedet for å måtte bekymre deg for detaljene rundt formatering og returnering av JSON-svar.