Tukaj bomo razumeli funkcijo jsonify() v spletnem ogrodju Flask za Python, ki pretvori izhod funkcije v odzivni objekt JSON. Podobno je j son.dumps() funkcijo v standardni knjižnici Python, ki objekt Python pretvori v niz, oblikovan v obliki JSON.
Kaj je jsonify()
Funkcija jsonify() je uporabna v aplikacijah Flask, ker samodejno nastavi pravilne glave odgovorov in vrsto vsebine za odgovore JSON ter vam omogoča enostavno vrnitev podatkov v obliki JSON iz vaših upravljavcev poti. Tako je ustvarjanje API-jev, ki vračajo podatke JSON, preprostejše in priročnejše.
Sintaksa funkcije jsonify().
Ta funkcija sprejme enega ali več pozicijskih argumentov, ki predstavljajo podatke, ki jih je treba pretvoriti v odzivni objekt JSON, in poljubno število ključnih argumentov, ki se uporabljajo za prilagoditev odzivnega objekta JSON.
jsonify(*args, **kwargs)
Primer jsonify() z brez argumenta
Jsonify() lahko uporabite brez argumentov; v tem primeru bo vrnil prazen odzivni objekt JSON s privzeto statusno kodo 200 (OK) in privzeto vrsto vsebine application/json.
Python3
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >return> jsonify()> |
>
>
Primer jsonify() z argumenti
V tem primeru kličemo jsonify() z enim pozicijskim argumentom (seznam uporabniških objektov), pa tudi z dvema argumentoma ključne besede s statusom in tipom mime. Argument stanja se uporablja za nastavitev kode stanja HTTP za odgovor, argument mimetype pa za nastavitev vrste vsebine za odgovor.
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() v Flasku
V tem primeru imamo aplikacijo Flask s potjo, ki vrne seznam uporabniških objektov. Ko odjemalec pošlje zahtevo tej poti, se izvede funkcija get_users() in seznam uporabniških objektov se pretvori v odzivni objekt JSON s funkcijo jsonify(). Ta odzivni objekt JSON se nato pošlje nazaj odjemalcu.
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()> |
>
>
Izhod:

metoda jsonify().
json.dumps() metoda v Flasku
V nasprotju s tem, če bi uporabili json.dumps() funkcijo, bi morali sami pretvoriti seznam uporabniških objektov v niz, oblikovan v obliki JSON, nato pa nastaviti ustrezne glave odgovorov in ročno vrniti odgovor odjemalcu:
Uporaba jsonify() je na splošno enostavnejša in bolj priročna kot uporaba json.dumps(), zato je priporočljivo, da uporabite jsonify(), kadar koli je to mogoče v aplikacijah Flask.
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()> |
>
pvr polna oblika
>
Izhod:
http://127.0.0.1:5000/api/users
Zakaj uporabljati jsonify() namesto json.dumps()
Obstaja več razlogov, zakaj je priporočljivo uporabljati funkcijo jsonify() namesto funkcije json.dumps() v aplikacijah Flask:
- Jsonify() je bolj priročen in lažji za uporabo kot json.dumps(). jsonify() ima preprosto in intuitivno sintakso ter samodejno obravnava podrobnosti pretvorbe vaših podatkov v odzivni objekt JSON in njihovega vračanja odjemalcu. Nasprotno pa json.dumps() zahteva, da te podrobnosti obdelate sami, kar je lahko bolj zamudno in nagnjeno k napakam.
- Jsonify() samodejno nastavi pravilne glave odgovorov in vrsto vsebine za odgovore JSON, medtem ko json.dumps() ne. To pomeni, da vam pri uporabi jsonify() ni treba ročno nastaviti glave Content-Type na application/json, pri uporabi json.dumps() pa bi to morali narediti ročno.
- jsonify() vam omogoča preprosto vrnitev podatkov v formatu JSON iz vaših upravljavcev poti, medtem ko json.dumps() tega ne omogoča. Z jsonify() lahko preprosto vrnete podatke, ki jih želite pretvoriti v odzivni objekt JSON iz vašega upravljalnika poti, jsonify() pa bo poskrbel za ostalo. Z json.dumps() bi morali sami pretvoriti podatke v niz, oblikovan v JSON, in jih nato vrniti kot del objekta Response.
- Na splošno lahko z uporabo jsonify() namesto json.dumps() v aplikacijah Flask postane lažje in bolj priročno ustvarjanje API-jev, ki vračajo podatke JSON. Omogoča vam, da se osredotočite na podatke in logiko vaše aplikacije, namesto da bi morali skrbeti za podrobnosti oblikovanja in vračanja odgovorov JSON.