(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo validar esquemas JSON de una API de Datos en Python: paso a paso

João Barros 10 de October de 2026 4 min de lectura

Este tutorial muestra cómo validar esquemas JSON de una API de Datos en Python para garantizar que los datos recibidos están en el formato esperado y reducir errores en downstream. La validación es útil para detectar campos faltantes, tipos incorrectos y estructuras inesperadas antes de procesar o cargar datos.

Requisitos previos

  • Python 3.8+ instalado
  • Pip para instalar paquetes (requests, jsonschema)
  • Conocimientos básicos de JSON y Python

Paso 1: Por qué validar JSON de una API de Datos

Las APIs pueden cambiar, devolver campos opcionales o tipos diferentes. Validar con un esquema evita que el código de procesamiento falle de forma silenciosa y facilita el logging y las alertas. Se usa un esquema JSON Schema (estándar) para describir estructura, tipos y campos obligatorios.

Paso 2: Instalar dependencias

Instala los paquetes necesarios: requests para llamar a la API y jsonschema para validar. Es sencillo y rápido.

pip install requests jsonschema

Paso 3: Definir un JSON Schema mínimo

Crea un esquema que describa los campos esenciales que esperas de la API. Aquí tienes un ejemplo para datos de usuarios con id, nombre y correo electrónico. Ajusta según tu API.

user_schema = {
    "type": "object",
    "properties": {
        "id": {"type": "integer"},
        "name": {"type": "string"},
        "email": {"type": "string", "format": "email"},
        "created_at": {"type": "string", "format": "date-time"}
    },
    "required": ["id", "name", "email"]
}

Paso 4: Hacer la llamada a la API y validar una respuesta única

Usa requests para obtener JSON y jsonschema.validate para verificar. Maneja excepciones para reportar errores claros (tipo, campo ausente, formato).

import requests
from jsonschema import validate, ValidationError

url = "https://api.exemplo.com/users/123"  # substitui pela tua endpoint
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()

try:
    validate(instance=data, schema=user_schema)
    print("Validação OK")
except ValidationError as e:
    print("Validação falhou:", e.message)

Paso 5: Validar listas de registros y recopilar errores

Cuando la API devuelve una lista, valida cada ítem y acumula errores. Así puedes procesar registros válidos y registrar los inválidos para inspección.

url = "https://api.exemplo.com/users"
resp = requests.get(url, params={"page": 1}, timeout=10)
resp.raise_for_status()
items = resp.json()

valid_items = []
errors = []
for i, item in enumerate(items):
    try:
        validate(instance=item, schema=user_schema)
        valid_items.append(item)
    except ValidationError as e:
        errors.append({"index": i, "error": e.message, "item": item})

print(f"{len(valid_items)} registos válidos, {len(errors)} inválidos")

Paso 6: Manejar campos opcionales y esquemas flexibles

Si la API tiene campos adicionales, usa "additionalProperties": true o define un subschema para campos extra. Para esquemas que cambian con frecuencia, valida solo los campos esenciales (minimizar falsos positivos).

flex_schema = {
    "type": "object",
    "properties": {
        "id": {"type": "integer"},
        "name": {"type": "string"}
    },
    "required": ["id"],
    "additionalProperties": True
}

Paso 7: Errores comunes y cómo resolverlos

Errores habituales: formato faltante (usar formats o validar manualmente), enteros enviados como string (convertir o aceptar ambos con "oneOf"), y campos opcionalmente ausentes. Registra la respuesta en bruto al detectar un error para diagnóstico.

from jsonschema import Draft7Validator

validator = Draft7Validator(user_schema)
for error in sorted(validator.iter_errors(data), key=str):
    print(error.message)

Verificar el resultado

Prueba con llamadas reales: deberías ver "Validação OK" para registros conformes y recibir mensajes claros para fallos. Para listas, confirma que valid_items contiene solo registros válidos y que errors tiene entradas con mensajes de error. Añade logs con URL, status code y payload cuando una validación falla.

Conclusión

Validar esquemas JSON de una API de Datos en Python reduce fallos y facilita la detección de cambios en la API. Próximos pasos: integrar la validación en un pipeline ETL, automatizar pruebas con fixtures y usar CI para alertar cuando la API cambia. Consejo: empieza por validar solo los campos críticos y expande el esquema conforme ganes confianza — ¿tienes alguna API específica que quieras validar?