¿Qué es la Validación JSON?
La validación JSON es el proceso de asegurar que los datos JSON cumplan con una estructura y reglas predefinidas. A través de la validación, podemos:
- • Asegurar formato correcto de datos
- • Verificar existencia de campos obligatorios
- • Comprobar coincidencia de tipos de datos
- • Aplicar restricciones de reglas de negocio
- • Proporcionar información clara de errores
Beneficios de la Validación
- • Mejorar calidad de datos
- • Reducir errores en tiempo de ejecución
- • Aumentar robustez de API
- • Mejorar experiencia del usuario
- • Facilitar depuración y mantenimiento
Momentos de Validación
- • Validación de entrada del cliente
- • Verificación de datos de interfaz API
- • Validación antes de almacenar en base de datos
- • Al cargar archivos de configuración
- • Proceso de importación y exportación de datos
Fundamentos de JSON Schema
Estructura Básica de Schema
Ejemplo de Schema Simple
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://ejemplo.com/usuario.schema.json",
"title": "Usuario",
"description": "Estructura de información de usuario",
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"nombre": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"type": "string",
"format": "email"
},
"edad": {
"type": "integer",
"minimum": 0,
"maximum": 150
}
},
"required": ["id", "nombre", "email"],
"additionalProperties": false
}Datos JSON Válidos Correspondientes
{
"id": 123,
"nombre": "Juan Pérez",
"email": "juan@ejemplo.com",
"edad": 28
}Ejemplo de Datos JSON Inválidos
{
"id": "abc", // Error: debería ser entero
"nombre": "", // Error: longitud no puede ser 0
"email": "email-inválido", // Error: formato de email incorrecto
"edad": -5 // Error: edad no puede ser negativa
}Explicación de Palabras Clave del Schema
Palabras Clave Básicas
$schemaEspecifica versión del Schema$idIdentificador único del SchematitleTítulo del SchemadescriptionDescripción del SchematypeTipo de datosPalabras Clave de Restricción
requiredLista de campos obligatoriospropertiesDefinición de propiedades de objetominimumValor mínimo de númeromaximumValor máximo de númerominLengthLongitud mínima de cadenaValidación de Tipos de Datos
Validación de Cadenas (string)
Restricciones de Validación
- • minLength / maxLength - Limitación de longitud
- • pattern - Coincidencia de expresiones regulares
- • format - Formato predefinido (email, date, uri, etc.)
- • enum - Limitación de valores enumerados
Ejemplo de Schema
{
"type": "string",
"minLength": 3,
"maxLength": 50,
"pattern": "^[A-Za-z0-9]+$",
"format": "email"
}✅ Valores Válidos
"usuario@ejemplo.com"❌ Valores Inválidos
"ab" // Longitud insuficiente "usuario@" // Formato incorrecto
Validación de Números (number/integer)
Restricciones de Validación
- • minimum / maximum - Rango de valores
- • exclusiveMinimum / exclusiveMaximum - Rango exclusivo
- • multipleOf - Restricción de múltiplos
- • Distinción entre integer vs number
Ejemplo de Schema
{
"type": "integer",
"minimum": 1,
"maximum": 100,
"multipleOf": 5
}✅ Valores Válidos
15, 25, 50❌ Valores Inválidos
0 // Menor que valor mínimo 150 // Excede valor máximo 13 // No es múltiplo de 5
Validación de Booleanos (boolean)
Restricciones de Validación
- • Solo acepta true o false
- • No acepta cadenas "true"/"false"
- • No acepta números 1/0
Ejemplo de Schema
{
"type": "boolean"
}✅ Valores Válidos
true, false❌ Valores Inválidos
"true" // Cadena 1 // Número null // Valor nulo
Validación de Arrays (array)
Restricciones de Validación
- • items - Tipo de elementos del array
- • minItems / maxItems - Limitación de longitud
- • uniqueItems - Restricción de unicidad
- • additionalItems - Control de elementos adicionales
Ejemplo de Schema
{
"type": "array",
"items": {"type": "string"},
"minItems": 1,
"maxItems": 5,
"uniqueItems": true
}✅ Valores Válidos
["a", "b", "c"]❌ Valores Inválidos
[] // Longitud insuficiente ["a", "a"] // No único [1, 2, 3] // Error de tipo
Validación de Objetos (object)
Restricciones de Validación
- • properties - Definición de propiedades
- • required - Propiedades obligatorias
- • additionalProperties - Control de propiedades adicionales
- • minProperties / maxProperties - Limitación de cantidad de propiedades
Ejemplo de Schema
{
"type": "object",
"properties": {
"nombre": {"type": "string"}
},
"required": ["nombre"],
"additionalProperties": false
}✅ Valores Válidos
{"nombre": "Juan"}❌ Valores Inválidos
{} // Falta campo obligatorio
{"nombre": "Juan", "edad": 25} // No permite propiedades adicionalesEstrategias de Manejo de Errores
Estructura de Información de Error de Validación
{
"valido": false,
"errores": [
{
"rutaInstancia": "/usuario/email",
"rutaSchema": "#/properties/usuario/properties/email/format",
"palabraClave": "format",
"parametros": {"format": "email"},
"mensaje": "debe coincidir con formato \"email\"",
"datos": "email-inválido"
},
{
"rutaInstancia": "/usuario/edad",
"rutaSchema": "#/properties/usuario/properties/edad/minimum",
"palabraClave": "minimum",
"parametros": {"minimum": 0},
"mensaje": "debe ser >= 0",
"datos": -5
}
]
}Explicación de Campos de Información de Error
- •
rutaInstancia: Ruta de datos con error - •
rutaSchema: Ruta correspondiente del Schema - •
palabraClave: Palabra clave de validación fallida - •
parametros: Parámetros de validación - •
mensaje: Descripción del error - •
datos: Datos reales con error
Manejo de Errores Amigable al Usuario
- • Convertir errores técnicos en información comprensible para el usuario
- • Proporcionar sugerencias de reparación
- • Mostrar errores agrupados por campo
- • Resaltar ubicaciones de error
- • Proporcionar ejemplos de formato correcto
❌ Información de Error Pobre
"debe coincidir con formato 'email'""data.edad debe ser >= 0"Problema: Terminología técnica, difícil de entender para el usuario
✅ Información de Error Buena
"Formato de email incorrecto, por favor ingrese un email válido""La edad no puede ser negativa, por favor ingrese 0 o un entero positivo"Ventaja: Claro y comprensible, proporciona soluciones
Referencia Rápida
Checklist de Validación JSON
Definir Schema completo
Especificar campos obligatorios
Configurar restricciones de tipo
Implementar manejo de errores amigable
Herramientas Relacionadas
- • Herramientas de Formateo JSON
- • Guía Completa de JSON
- • Técnicas de Optimización de Rendimiento
- • Herramientas de Generación de Schema