logo

Utilitzeu jsonify() en lloc de json.dumps() a Flask

Aquí, entendrem la funció jsonify() al marc web de Flask per a Python que converteix la sortida d'una funció en un objecte de resposta JSON. És semblant a la j son.dumps() funció a la biblioteca estàndard de Python, que converteix un objecte de Python en una cadena amb format JSON.

Què és jsonify()

La funció jsonify() és útil a les aplicacions de Flask perquè estableix automàticament les capçaleres de resposta i el tipus de contingut correctes per a les respostes JSON i us permet retornar fàcilment dades amb format JSON dels vostres gestors de rutes. Això fa que sigui més fàcil i convenient crear API que retornin dades JSON.



Sintaxi de la funció jsonify().

Aquesta funció admet un o més arguments posicionals, que representen les dades que s'han de convertir en un objecte de resposta JSON, i qualsevol nombre d'arguments de paraula clau, que s'utilitzen per personalitzar l'objecte de resposta JSON.

jsonify(*args, **kwargs)

Exemple de jsonify() sense argument



Podeu utilitzar jsonify() sense cap argument, en aquest cas retornarà un objecte de resposta JSON buit amb un codi d'estat predeterminat de 200 (OK) i un tipus de contingut predeterminat d'aplicació/json.

connexions en java

Python 3






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

>

>

Exemple de jsonify() amb arguments

En aquest exemple, estem cridant a jsonify() amb un sol argument posicional (la llista d'objectes d'usuari), així com dos arguments de paraula clau amb status i mimetype. L'argument status s'utilitza per establir el codi d'estat HTTP per a la resposta i l'argument mimetype s'utilitza per definir el tipus de contingut de la resposta.

Python 3




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

>

>

mètode jsonify() a Flask

En aquest exemple, tenim una aplicació Flask amb una ruta que retorna una llista d'objectes d'usuari. Quan un client fa una sol·licitud a aquesta ruta, s'executa la funció get_users() i la llista d'objectes d'usuari es converteix en un objecte de resposta JSON mitjançant la funció jsonify(). Aquest objecte de resposta JSON es torna a enviar al client.

Python 3




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

>

>

Sortida:

Utilitzeu jsonify() en lloc de json.dumps() a Flask

mètode jsonify().

json.dumps() mètode a Flask

En canvi, si haguéssiu d'utilitzar json.dumps() funció, haureu de convertir vosaltres mateixos la llista d'objectes d'usuari en una cadena amb format JSON i, a continuació, establiu les capçaleres de resposta adequades i retorneu la resposta al client manualment:

L'ús de jsonify() és generalment més fàcil i convenient que utilitzar json.dumps(), per la qual cosa es recomana utilitzar jsonify() sempre que sigui possible a les aplicacions de Flask.

Python 3




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

>

>

Sortida:

http://127.0.0.1:5000/api/users

Utilitzeu jsonify() en lloc de json.dumps() a Flask

Per què utilitzar jsonify() en lloc de json.dumps()

Hi ha diverses raons per les quals es recomana utilitzar la funció jsonify() en lloc de la funció json.dumps() a les aplicacions de Flask:

  • El jsonify() és més còmode i més fàcil d'utilitzar que json.dumps(). jsonify() té una sintaxi senzilla i intuïtiva i gestiona automàticament els detalls de la conversió de les vostres dades a un objecte de resposta JSON i de retornar-los al client. En canvi, json.dumps() requereix que gestioneu aquests detalls vosaltres mateixos, cosa que pot ser més llarga i propensa a errors.
  • El jsonify() estableix automàticament les capçaleres de resposta i el tipus de contingut correctes per a les respostes JSON, mentre que json.dumps() no. Això vol dir que no heu de configurar manualment la capçalera Content-Type a application/json quan feu servir jsonify(), però ho haureu de fer manualment quan feu servir json.dumps().
  • jsonify() us permet retornar fàcilment dades amb format JSON dels vostres gestors de rutes, mentre que json.dumps() no ho fa. Amb jsonify(), simplement podeu tornar les dades que voleu convertir en un objecte de resposta JSON des del vostre gestor de ruta i jsonify() s'encarregarà de la resta. Amb json.dumps(), hauríeu de convertir vosaltres mateixos les dades en una cadena amb format JSON i després tornar-les com a part d'un objecte Response.
  • En general, utilitzar jsonify() en comptes de json.dumps() a les aplicacions de Flask pot fer que sigui més fàcil i més convenient crear API que retornin dades JSON. Us permet centrar-vos en les dades i la lògica de la vostra aplicació, en lloc d'haver de preocupar-vos pels detalls del format i el retorn de les respostes JSON.