Guide 27 Mar 2026 12 min de lectura

Validacion de JSON Schema: Guia Completa para Definir y Validar Datos JSON

Aprende como JSON Schema funciona como un contrato para tus datos -- desde tipos basicos y campos obligatorios hasta validacion de formatos, versiones de borrador y casos de uso reales para APIs y archivos de configuracion.

JSON Schema Validation Guide

Que es JSON Schema?

JSON Schema es un lenguaje declarativo que te permite describir la estructura, contenido y restricciones de un documento JSON. Piensa en el como un contrato entre un productor y un consumidor de datos. El productor dice "siempre enviare un objeto con un string name y un entero age", y el consumidor puede verificar que cada payload entrante realmente cumple esa promesa antes de procesarlo.

Esto importa porque JSON en si mismo no tiene esquema. Cualquier valor JSON valido -- un string, un numero, un objeto profundamente anidado con claves aleatorias -- es perfectamente legal. Esa libertad es maravillosa para prototipar rapido, pero se convierte en una carga el momento en que dos sistemas necesitan ponerse de acuerdo sobre como deben verse los datos.

Por que JSON Schema Importa para las APIs

Las APIs REST se comunican a traves de payloads JSON, y cada endpoint tiene una forma implicita: campos obligatorios, tipos esperados, restricciones de valor. JSON Schema hace esa forma explicita y legible por maquinas. Una vez que tienes un esquema, puedes:

  • Validar solicitudes en el servidor antes de que lleguen a tu logica de negocio, retornando errores 400 claros en lugar de 500 cripticos.
  • Validar respuestas en pruebas de integracion para capturar cambios que rompen antes de que lleguen a produccion.
  • Generar documentacion automaticamente -- herramientas como Swagger/OpenAPI usan JSON Schema como columna vertebral de sus definiciones de tipos.
  • Generar codigo -- herramientas de esquema a TypeScript, esquema a Go struct y esquema a Python dataclass eliminan definiciones de tipos manuales.
Clave: JSON Schema no es solo una herramienta de validacion. Es una unica fuente de verdad que impulsa documentacion, generacion de codigo, pruebas y verificaciones en tiempo de ejecucion -- todo desde un solo archivo.

Fundamentos de JSON Schema

Cada JSON Schema es en si mismo un objeto JSON. El esquema mas simple posible es un objeto vacio {}, que acepta cualquier JSON valido. Desde ahi, agregas palabras clave para estrechar lo que esta permitido.

Tipos Primitivos

La palabra clave type es el fundamento. JSON Schema reconoce seis tipos primitivos mas un modificador estructural:

Tipo Ejemplo JSON Notas
string"hola"Valores de texto. Se puede restringir con minLength, maxLength, pattern.
number3.14Cualquier valor numerico incluyendo decimales. Usa minimum, maximum, multipleOf.
integer42Solo numeros enteros. Mismas restricciones que number.
booleantrueSolo true o false. No necesita restricciones adicionales.
object{"clave": "valor"}Pares clave-valor. Se define con properties, required, additionalProperties.
array[1, 2, 3]Listas ordenadas. Usa items, minItems, maxItems, uniqueItems.
nullnullLa ausencia de un valor. A menudo se combina con otro tipo.

Propiedades y Campos Obligatorios

Para objetos, la palabra clave properties define que claves se esperan y como debe verse cada una. La palabra clave required lista cuales de esas claves deben estar presentes.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name", "email"]
}

Este esquema dice: los datos deben ser un objeto; debe tener un string name no vacio y un string email valido; age es opcional pero si esta presente debe ser un entero no negativo.

Controlando Propiedades Adicionales

Por defecto, los objetos aceptan cualquier clave extra mas alla de lo que properties define. Configurar "additionalProperties": false hace el esquema estricto. Esto es valioso para APIs donde campos inesperados pueden indicar un error del cliente o una incompatibilidad de version.

Cuidado: Si usas additionalProperties: false junto con palabras clave de composicion como allOf, las propiedades definidas en otros sub-esquemas pueden ser rechazadas. Esta es una de las trampas mas comunes en JSON Schema.

Validacion de Formato

La palabra clave format proporciona validacion semantica mas alla de los tipos basicos. Un campo puede ser un string, pero no cualquier string -- debe ser una direccion de email, una fecha, un URI o una direccion IP.

Formatos Incorporados

Formato Valor de Ejemplo Caso de Uso
date-time2026-03-27T10:30:00ZMarcas de tiempo ISO 8601 para eventos y registros
date2026-03-27Fechas de calendario sin hora
email[email protected]Formularios de contacto, registro de usuarios
urihttps://example.com/apiURLs de webhook, enlaces de recursos
uuid550e8400-e29b-41d4-a716-446655440000Identificadores unicos, claves primarias
ipv4192.168.1.1Configuracion de red, direcciones de servidor
ipv62001:db8::1Direcciones de red modernas
hostnameapi.example.comNombres DNS, descubrimiento de servicios

Formato como Anotacion vs. Asercion

Un matiz importante: por defecto, la palabra clave format es una anotacion, no una asercion. En Draft 2020-12, debes habilitar explicitamente la asercion de formato si quieres que la validacion falle con formatos invalidos.

Consejo practico: Siempre combina format con un regex pattern si la validacion estricta es critica para tu caso de uso.

Versiones de Borrador: Draft-07 vs 2020-12

JSON Schema ha evolucionado a traves de varias versiones de borrador. Las dos que encontraras con mas frecuencia son Draft-07 (publicado en 2018) y Draft 2020-12 (la version estable actual).

Diferencias Clave

Caracteristica Draft-07 Draft 2020-12
$schema URIhttp://json-schema.org/draft-07/schema#https://json-schema.org/draft/2020-12/schema
prefixItemsNo disponibleReemplaza validacion de tuplas
$dynamicRefNo disponibleNuevo -- referencias de esquema dinamicas
unevaluatedPropertiesNo disponibleResuelve el problema additionalProperties + allOf
Soporte de bibliotecasExcelenteBueno y creciendo

Cual Version Elegir?

Elige Draft-07 si tu ecosistema ya lo usa o si necesitas maxima compatibilidad con herramientas existentes.

Elige Draft 2020-12 si empiezas un nuevo proyecto sin restricciones heredadas o si necesitas unevaluatedProperties para composicion limpia de esquemas.

Conclusion

Para la mayoria de proyectos nuevos en 2026, Draft 2020-12 es la mejor opcion predeterminada. Corrige puntos de dolor reales y el soporte de bibliotecas se ha puesto al dia.

Como Usar Nuestro Generador de JSON Schema

Nuestro Generador de JSON Schema gratuito toma cualquier payload JSON y produce un esquema valido automaticamente. Todo se ejecuta en tu navegador, asi que tus datos nunca salen de tu dispositivo.

Guia Paso a Paso

  1. Abre la herramienta Generador de JSON Schema.
  2. Pega tu JSON en el area de entrada.
  3. Haz clic en Generar y la herramienta analizara cada campo, inferira tipos, detectara formatos y identificara propiedades obligatorias.
  4. Revisa la salida -- el esquema generado aparece en el panel de salida.
  5. Cambia a la pestana Validar para probar tu esquema contra nuevos payloads JSON.
  6. Copia el esquema con un clic e integralo en tu proyecto.
Nota de Privacidad

Nuestro Generador de JSON Schema se ejecuta 100% en tu navegador. Tus datos JSON, esquemas generados y resultados de validacion nunca salen de tu dispositivo.

Genera tu JSON Schema al Instante

Pega cualquier payload JSON y obtiene un esquema listo para usar con inferencia de tipos, campos obligatorios y deteccion de formato -- 100% en tu navegador.