Validador de JSON Schema | Alterna draft-07, 2019-09 y 2020-12 dentro del navegador
Herramienta ligera para validar respuestas de API, fragmentos extraídos de un OpenAPI o archivos de configuración contra un JSON Schema. Cambia entre los tres drafts principales con un clic y obtén cada error con ruta JSON Pointer, palabra clave y mensaje en una tabla.
💡 Sobre esta herramienta
JSON Schema es el lenguaje declarativo más extendido para describir la estructura permitida de un JSON: contratos REST, payloads de webhooks, archivos de configuración e incluso autocompletado en settings.json de VS Code. La parte tediosa en el día a día rara vez es leer el schema, sino aislar exactamente qué palabra clave rompe con una instancia concreta. Instalar ajv-cli con npm i -g es desproporcionado para una revisión rápida de PR, y los plugins de IDE suelen estar atados a una sola versión de draft. Esta herramienta cubre justo ese hueco intermedio.
Selecciona draft-07, 2019-09 o 2020-12 según la versión que use tu cadena de herramientas. El validador analiza ambas entradas con JSON.parse nativo y ejecuta una implementación subset del estándar. Los errores se muestran en una tabla de tres columnas — instancePath (JSON Pointer), keyword y mensaje — para que rastrees fallos dentro de properties profundamente anidados sin perderte. Activa el modo "Solo el primero" cuando quieras una salida temprana al encontrar la primera violación, especialmente útil al depurar schemas grandes paso a paso.
Las palabras clave cubiertas son las del núcleo: type, required, enum, const, minLength, maxLength, pattern, minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, minItems, maxItems, uniqueItems, prefixItems, items, minProperties, maxProperties, additionalProperties, patternProperties, format (subset), allOf, anyOf, oneOf, not y schemas booleanos false. Lo que no se resuelve: $ref / $defs, dependentSchemas, contains, if/then/else y unevaluatedProperties / unevaluatedItems. Si tu schema depende de esas palabras clave, complementa con ajv o jsonschema en CI — esta herramienta cumple el rol de comprobación previa, no de validador de producción.
🧐 Preguntas Frecuentes
Q. ¿Qué cambia al alternar la versión del draft?
En 2020-12, items solo acepta un único schema; la validación tipo tupla se trasladó a prefixItems. Este validador implementa prefixItems y también acepta items con array en 2019-09 y draft-07. exclusiveMinimum y exclusiveMaximum se tratan como numéricos en los tres drafts.
Q. ¿Qué tan estricta es la verificación de format?
email, uri, url, uuid, date, time, date-time, ipv4, ipv6 y hostname se validan con expresiones regulares internas — un subset rápido, no conformidad RFC completa. Para revisar bits de variante de UUID o date-time con segundos intercalares, añade ajv-formats encima en tu paso de CI.
Q. ¿Funcionan los schemas con $ref?
El parseo no falla, pero los targets de $ref no se desreferencian — las restricciones detrás de la referencia simplemente no se aplican, así que la instancia puede marcarse válida aunque el schema referenciado la rechazaría. Usa ajv u otra implementación completa cuando la resolución de $ref sea crítica.
Q. La lista de errores es enorme — ¿cómo priorizo? Cambia "Errores" a "Solo el primero" para que el validador salga en la primera violación encontrada. Combinado con schemas profundos, es la forma más rápida de recorrer el árbol de fallos sin que 200 errores en cascada oculten la causa raíz.
Q. ¿Hay un límite de tamaño de entrada?
No hay tope estricto, pero JSON.parse corre en el hilo principal y consume memoria real. Las cargas de varios megabytes pertenecen a CI con ajv; esta herramienta está dimensionada para cuerpos de petición únicos, fixtures y muestras de webhook.
Q. ¿Puedo reutilizar la salida de errores?
El botón Copiar bajo la tabla pone en el portapapeles un array JSON de registros {instancePath, schemaPath, keyword, message}. Pégalos directamente en un Issue de GitHub, comentario de PR o reporte de tests.
📚 Datos Curiosos
El historial de versiones de JSON Schema es inusual: draft-04 (2013) → draft-06 (principios de 2017) → draft-07 (finales de 2017) → draft-2019-09 → draft-2020-12. La numeración cambió de secuencial a etiquetas año-mes alrededor de 2019, cuando el grupo de trabajo del IETF aclaró que aquí "draft" significa número de revisión, no "incompleto". Pese a esa connotación, draft-07 sigue siendo el más desplegado por estar fijado en OpenAPI 3.0 (la spec 3.1 finalmente saltó a 2020-12).
En el ecosistema hispanohablante de desarrollo backend, el uso de JSON Schema ha crecido con NestJS y Fastify, donde se integra con class-validator y @sinclair/typebox para tener un único esquema que sirva tanto a TypeScript como al contrato HTTP. Las palabras clave anotativas como description, examples y default no afectan a la validación pero alimentan documentación automática en Swagger UI y Stoplight — vale la pena documentar incluso schemas internos.