Flask JSON

El módulo JSON de Flask proporciona funcionalidad de serialización/deserialización, utilizando por defecto la biblioteca estándar de Python json, que puede reemplazarse mediante JSONProvider.

Forma de importación:

from flask import jsonify

o

from flask.json import dumps, loads

Función jsonify

La función más utilizada para construir respuestas JSON. Serializa objetos de Python en una Response JSON.

Uso Descripción
jsonify(*args, **kwargs) Serializa los parámetros a JSON, devuelve una Response (Content-Type: application/json)
jsonify(dict) Serializa un diccionario como respuesta JSON
jsonify(key=value, ...) Serializa argumentos de palabra clave como respuesta JSON

dumps / loads / dump / load

Función Firma Descripción
dumps (obj, *, skipkeys=False, ensure_ascii=True, ...) Serializa un objeto de Python a una cadena JSON
loads (s, *, ...) Deserializa una cadena JSON a un objeto de Python
dump (obj, fp, *, ...) Serializa un objeto de Python y lo escribe en un archivo
load (fp, *, ...) Lee de un archivo y deserializa JSON

Clase JSONProvider

Clase base personalizable para el procesador JSON. Para reemplazar la implementación JSON predeterminada, hereda de esta clase y sobrescribe los métodos correspondientes.

Métodos Descripción
dumps(obj, **kwargs) Serializa un objeto a una cadena JSON
loads(s, **kwargs) Deserializa desde una cadena JSON a un objeto de Python
response(obj) Convierte un objeto a una Response JSON. Se usa para jsonify y al devolver dict/list

DefaultJSONProvider

Implementación JSONProvider predeterminada, basada en la biblioteca estándar de Python json.

Atributos/Métodos Descripción
ensure_ascii Si escapar caracteres no ASCII. Puede establecerse en False para admitir salida en chino
sort_keys Si ordenar la salida por clave. Por defecto es True
compact Si usar salida compacta (sin espacios). Por defecto es False

Serialización JSON Tag

flask.json.tagEl módulo admite la serialización de más tipos de Python, como datetime, tuple, set, etc.

Etiqueta Tipo de Python correspondiente
JSONTaggedJSONSerializer Serializador mejorado, utilizado por defecto por Session. Admite formato JSON con etiquetas

Ejemplo de código

Ejemplo

from flask import Flask, jsonify

app = Flask(__name__)

@app.get("/api/me")
def me():
    # Devuelve un dict, Flask llama automáticamente a jsonify
    return {
        "username": "ejemplo",
        "email": "[email protected]",
        "roles": ["admin", "editor"]
    }

@app.get("/api/users")
def users():
    # Devuelve una list, Flask llama automáticamente a jsonify
    return [
        {"id": 1, "name": "ejemplo"},
        {"id": 2, "name": "admin"}
    ]

@app.get("/api/status")
def status():
    # Uso explícito de jsonify
    return jsonify(status="ok", version="1.0")

# Configurar salida JSON en chino
app.json.ensure_ascii = False
# {"username": "ejemplo", "description": "descripción en chino"}
Otras extensiones