Qué hace
JSON Schema es un vocabulario para describir la forma de los datos JSON: qué propiedades debe tener un objeto, de qué tipo es cada valor, rangos y patrones permitidos, longitudes de arrays y mucho más. Las API lo usan en sus especificaciones OpenAPI, los editores lo aprovechan para autocompletar archivos de configuración y los back ends lo usan para rechazar peticiones incorrectas.
Este validador comprueba un documento JSON contra un esquema y enumera cada problema que encuentra. Cada error muestra dónde está en los datos (un JSON Pointer como /tags/1), un mensaje legible y la palabra clave del esquema que falló, para que corrijas los datos o el esquema rápidamente. Admite draft 2020-12, 2019-09, draft-07 y draft-04, incluidos $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties y la comprobación de formatos.
Cómo se usa
- Pega los datos en Datos JSON y el esquema en JSON Schema, o sube un archivo a cada lado. Ejemplo carga un registro de usuario con algunos errores intencionados.
- El resultado se actualiza mientras escribes: una insignia verde si los datos son válidos o, si no, el número de errores y su lista.
- Deja Versión en Automática para seguir
$schemao fuerza una versión. Desactiva Mostrar todos los errores para detenerte en el primer fallo. - Copiar errores copia la lista como texto plano, para un informe de fallos o una revisión de código.
Si alguno de los dos lados no es JSON válido, el mensaje indica si el problema está en los datos o en el esquema y da la línea y la columna.
Ejemplo
Con este esquema:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
el documento {"age": -1} produce dos errores: en (raíz) falta la propiedad obligatoria id; en /age el valor es inferior al mínimo de 0.
Consejos
Añade "additionalProperties": false para detectar nombres de propiedad mal escritos, que de otro modo pasan sin aviso. Usa enum o const para valores fijos y pattern para cadenas como códigos de producto. Cuando el esquema crezca, mueve las partes repetidas a $defs y referéncialas con $ref.
Preguntas frecuentes
› ¿Qué versiones de JSON Schema se admiten?
Draft 2020-12, 2019-09, draft-07 (que también cubre draft-06) y draft-04. Con Versión en Automática, se lee de la palabra clave $schema del esquema; los esquemas sin $schema se tratan como 2020-12.
› ¿Qué significan las rutas de los errores?
La primera ruta es un JSON Pointer al valor de tus datos que falló, como /items/2/price; (raíz) significa el documento entero. La línea gris muestra la palabra clave que falló y su ubicación en el esquema, como minimum · #/properties/age/minimum.
› ¿Se comprueban formatos como email y date-time?
Sí. Se validan los formatos habituales: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer y otros. Los formatos desconocidos se ignoran, como permite la especificación.
› ¿Puede el esquema referenciar otros archivos?
Las referencias dentro del mismo esquema funcionan, por ejemplo un $ref a #/$defs/address. Las URL externas no se descargan, porque nada sale de tu navegador; pega las definiciones referenciadas en $defs.