matraz jsonify
Esta guía verá qué es jsonify
y lo volcará
en el frasco
. ¿Cuál es el uso de flask.jsonify
y json.dump
, y cuál es la diferencia entre ellos?
Entonces, sin esperar más, vamos a sumergirnos.
Uso de flask.jsonify()
y json.dumps()
Parece que hay un número cada vez mayor de personas que se confunden entre flask.jsonify()
y json.dumps()
ya que solo hay ligeras diferencias entre estas dos funciones.
La diferencia entre los dos en términos de cómo funcionan no es tan difícil como puede parecer inicialmente.
Para simplificarnos la comprensión de estas diferencias, respondamos la pregunta principal: ¿cuándo debemos usar json.dumps()
y flask.jsonify()
? Pero primero, veamos qué es json.dumps()
.
el método json.dumps()
Primero, mientras leemos o escribimos los archivos JSON, debemos usar el paquete json
. Este paquete incluye un método llamado json.dumps()
para convertir los datos escritos en Python en un archivo JSON.
Este método convertirá todos los datos escritos en Python y los devolverá en cadenas, que ahora se leerán como un archivo JSON.
Se utiliza un ejemplo del método json.dumps()
para nombrar la lista de ciudades.
@app.route("/") # display on "home" page
def list_of_cities_dumps():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return json.dumps(
cities
) # json.dump() method is being used to call the list of cities
if __name__ == "__main__":
app.run(debug=True)
Producción :
[{'name': 'Central City', 'country': 'USA'}, {'name': 'Ottawa', 'country': 'Canada'}]
Como se muestra en el ejemplo anterior, se muestra la salida de la lista de ciudades. Aunque es legible, imagina que el usuario tuviera datos de los alumnos de una escuela.
Sería difícil distinguir entre los estudiantes si se usara este método, ya que no hay una formación de datos clara.
Entonces, para superar este defecto, se introdujo la función flask.jsonify()
.
la función flask.jsonify()
En el módulo flask.json
, jsonify
es una función en Flask. Para enviar datos como una respuesta HTTP al usar el marco Flask, deberá usar la función flask.jsonify()
.
Necesitaríamos importar frasco
para usar esta función.
Esta función luego convertirá los datos en un archivo JSON y luego devolverá un objeto de respuesta, que se usa para que el servidor responda a la solicitud del cliente.
El archivo JSON convertido se agregará al objeto de respuesta recién creado. Establecer el campo de encabezado de tipo de contenido en aplicación/JSON
también agregará el tipo MIME apropiado, comúnmente conocido como tipo de medio.
Cuando envía un archivo junto con un tipo de medio o tipo MIME, indica el tipo de archivo que es junto con el mensaje.
Con la ayuda del mismo ejemplo anterior, comprendamos mejor el funcionamiento de flask.jsonify()
.
@app.route("/") # displays on the "home" page
def list_of_cities():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return jsonify(
cities
) # the function jsonify is used here to call the list of cities
if __name__ == "__main__":
app.run(debug=True)
Producción :
[
{
"country": "USA",
"name": "Central City"
},
{
"country": "Canada",
"name": "Ottawa"
}
]
Como se muestra en la salida, la salida de la lista de ciudades está organizada y es fácil de entender en comparación con cuando usamos el método json.dumps()
.
El siguiente código es la combinación de ambos ejemplos.
from flask import Flask, jsonify
import json
app = Flask(__name__)
@app.route("/")
def list_of_cities():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return jsonify(cities)
@app.route("/1")
def list_of_cities_dumps():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return json.dumps(cities)
if __name__ == "__main__":
app.run(debug=True)
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn