Šeit mēs sapratīsim funkciju jsonify() Python tīmekļa ietvarā Flask, kas pārvērš funkcijas izvadi par JSON atbildes objektu. Tas ir līdzīgs j son.dumps() funkcija Python standarta bibliotēkā, kas pārvērš Python objektu par JSON formatētu virkni.
atgriešanas veids java
Kas ir jsonify ()
Funkcija jsonify() ir noderīga lietotnēs Flask, jo tā automātiski iestata pareizos atbilžu galvenes un satura veidu JSON atbildēm, kā arī ļauj viegli atgriezt JSON formatētus datus no maršruta apstrādātājiem. Tādējādi ir vieglāk un ērtāk izveidot API, kas atgriež JSON datus.
Funkcijas jsonify() sintakse
Šī funkcija uzņem vienu vai vairākus pozicionālos argumentus, kas atspoguļo datus, kas jāpārvērš JSON atbildes objektā, un neierobežotu skaitu atslēgvārdu argumentu, kas tiek izmantoti, lai pielāgotu JSON atbildes objektu.
jsonify(*args, **kwargs)
Jsonify() piemērs ar bez argumenta
Varat izmantot jsonify() bez argumentiem, šajā gadījumā tas atgriezīs tukšu JSON atbildes objektu ar noklusējuma statusa kodu 200 (OK) un noklusējuma lietojumprogrammas/json satura veidu.
Python3
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >return> jsonify()> |
>
>
Jsonify() piemērs ar argumentiem
Šajā piemērā mēs izsaucam jsonify() ar vienu pozīcijas argumentu (lietotāja objektu sarakstu), kā arī divus atslēgvārdu argumentus ar statusu un mimetype. Statusa arguments tiek izmantots, lai iestatītu atbildes HTTP statusa kodu, un arguments mimetype tiek izmantots, lai iestatītu atbildes satura tipu.
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() metodi Kolbā
Šajā piemērā mums ir lietotne Flask ar maršrutu, kas atgriež lietotāja objektu sarakstu. Kad klients iesniedz pieprasījumu šim maršrutam, tiek izpildīta funkcija get_users() un lietotāja objektu saraksts tiek pārveidots par JSON atbildes objektu, izmantojot funkciju jsonify(). Pēc tam šis JSON atbildes objekts tiek nosūtīts atpakaļ klientam.
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()> |
>
>
Izvade:

jsonify() metode
json.dumps() metodi Kolbā
Turpretim, ja jūs izmantotu json.dumps() funkciju, jums pašam ir jāpārvērš lietotāja objektu saraksts par JSON formatētu virkni un pēc tam jāiestata atbilstošās atbilžu galvenes un manuāli jāatgriež atbilde klientam:
Funkcijas jsonify() izmantošana parasti ir vienkāršāka un ērtāka nekā json.dumps(), tāpēc Flask lietotnēs ieteicams izmantot jsonify(), kad vien iespējams.
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()> |
>
>
Izvade:
http://127.0.0.1:5000/api/users
Kāpēc izmantot jsonify(), nevis json.dumps()
Ir vairāki iemesli, kāpēc Flask lietotnēs ir ieteicams izmantot funkciju jsonify(), nevis funkciju json.dumps().
- Jsonify() ir ērtāks un vieglāk lietojams nekā json.dumps(). jsonify() ir vienkārša un intuitīva sintakse, un tā automātiski apstrādā detalizētu informāciju par datu pārveidošanu JSON atbildes objektā un atdošanu klientam. Turpretim json.dumps() prasa, lai šī informācija jums būtu jāapstrādā pašam, kas var būt laikietilpīgāks un vairāk kļūdu.
- jsonify() automātiski iestata pareizos atbilžu galvenes un satura veidu JSON atbildēm, bet json.dumps() to nedara. Tas nozīmē, ka, izmantojot jsonify(), jums nav manuāli jāiestata Content-Type galvene uz application/json, taču, izmantojot json.dumps(), tas būs jādara manuāli.
- jsonify() ļauj viegli atgriezt JSON formatētus datus no maršruta apstrādātājiem, savukārt json.dumps() to nedara. Izmantojot jsonify(), varat vienkārši atgriezt datus, kurus vēlaties pārveidot par JSON atbildes objektu no maršruta apstrādātāja, un jsonify() parūpēsies par pārējo. Izmantojot json.dumps(), jums pašam jākonvertē dati par JSON formatētu virkni un pēc tam jāatgriež kā daļa no atbildes objekta.
- Kopumā jsonify() izmantošana json.dumps() vietā Flask lietotnēs var atvieglot un ērtāk izveidot API, kas atgriež JSON datus. Tas ļauj jums koncentrēties uz lietotnes datiem un loģiku, nevis jāuztraucas par formatēšanas un JSON atbilžu atgriešanas detaļām.