JSON Schema: de lo básico a producción
Hay muchas palabras clave, pero solo una docena se usan a diario. Domina type/properties/required/$ref, gestiona bien los mensajes de error y cubrirás el ochenta por ciento de los casos reales.
Describe la forma de tus datos con JSON Schema, convierte los acuerdos verbales en validación ejecutable y deja que a su vez impulse los tipos de TypeScript y la generación de formularios.
7 artículosHay muchas palabras clave, pero solo una docena se usan a diario. Domina type/properties/required/$ref, gestiona bien los mensajes de error y cubrirás el ochenta por ciento de los casos reales.
Los tipos y los esquemas cubren cada uno un segmento: uno en tiempo de compilación, otro en tiempo de ejecución. La pregunta no es cuál elegir, sino cómo mantener ambos sincronizados de forma automática.
Los esquemas generados suelen bloquear datos válidos. Descubre por qué las muestras más ricas producen esquemas peores y luego el flujo de trabajo: muestreo de varios registros, compleción semántica y localización de errores.
$ref resuelve la reutilización, allOf y oneOf resuelven la composición, y apilar ambos es donde se rompe. Cubre $id, $defs, condicionales, recursión, empaquetado y depuración.
El validador emite errores legibles por máquina; los usuarios quieren saber qué casilla está mal. Cubre el array de errores de Ajv, instancePath frente a schemaPath, agrupación y redacción.
Una validación exitosa no significa datos limpios. Pydantic ignora los campos desconocidos por defecto, Zod los elimina y Ajv los deja pasar — los parámetros alucinados y las claves mal escritas atraviesan en silencio. Este artículo muestra las tres formas de aceptación silenciosa y da recetas completas: cerrar objetos, controlar la coerción y apretar cada nivel de anidación.
Un esquema no termina cuando se escribe — ahí es donde empieza a degradarse. Una errata relaja la validación en silencio, una refactorización rompe todos los fixtures. Esta guía disecciona un sistema de tests de contrato que se puede ejecutar: fixtures positivos, negativos y de snapshot, lint del propio esquema, compilación única con reutilización y cuatro gates de CI que convierten los cambios que rompen contratos en builds rojos.