Valida un JSON con un JSON Schema (draft 2020-12, o draft-07 mediante $schema) y consulta cada error con la ruta donde ocurre.
¿Qué es JSON Schema Validator?
JSON Schema Validator es una herramienta en línea gratuita que comprueba un documento JSON con un JSON Schema, en tu navegador, y enumera cada punto en el que el documento incumple el esquema, cada uno con su ubicación y la palabra clave que falló. Sigue el draft 2020-12, salvo que el esquema indique otro draft en $schema.
Úsalo para probar un esquema o para averiguar por qué se rechaza el payload de una API o un archivo de configuración.
Qué admite
- Un esquema (un objeto, o true o false) y un documento JSON, ambos como texto. La validación sigue JSON Schema draft 2020-12, salvo que $schema diga otra cosa.
- Drafts: $schema selecciona draft-04, draft-06, draft-07, 2019-09 o 2020-12, con http o https y con o sin un # final. El draft-06 se comprueba con las reglas del draft-07, porque la herramienta no tiene un modo draft-06 aparte y el draft-07 solo le añade palabras clave. Cualquier otro $schema se rechaza.
- Se recogen todos los errores, no solo el primero. Cada uno es una línea con la ubicación del valor en tu JSON como un JSON Pointer después de # (# es el documento entero, #/items/1/qty es un valor anidado), la palabra clave que falló entre paréntesis y una explicación.
- Los errores que solo se repiten aparecen una vez, y se omiten las líneas que solo repiten un error más profundo. Si hay más de 100 errores, se enumeran los 100 primeros y el resultado indica cuántos más se omitieron.
- Se sigue un $ref que apunta dentro del mismo esquema, como #/$defs/name. Un $ref a otro documento nunca se descarga: se rechaza como esquema no válido.
- Un esquema que es solo true acepta todo documento, y false los rechaza todos.
Conviene saber
- La herramienta solo valida. Nunca cambia tu JSON, rellena valores por defecto ni convierte tipos.
- La ubicación y la palabra clave son las partes en las que confiar. La explicación que las sigue es un resumen en lenguaje sencillo, escrito en el idioma de la página.
- Antes de validar, la herramienta rechaza un esquema, lo señala como el esquema e indica la palabra clave, cuando un type no es uno de los tipos JSON (array, boolean, integer, null, number, object o string), cuando un $ref no apunta a ningún sitio o apunta a otro documento, o cuando un pattern o un nombre de patternProperties no es una expresión regular válida. Un $ref que vuelve sobre sí mismo se detiene como límite de procesamiento.
- La herramienta no comprueba un esquema con su metaesquema. Cualquier otra palabra clave con la forma incorrecta (como required: 5) solo se detecta cuando el JSON comprobado llega hasta ella, así que un error ahí puede pasar inadvertido.
- Un nombre repetido dentro de un objeto, en el esquema o en el JSON, y una cadena con un escape subrogado sin pareja se rechazan en lugar de dejar que un valor prevalezca.
- En la validación, los números se leen como los números de doble precisión que usa la mayoría de los programas, así que un número con más dígitos que eso se compara por su valor redondeado.
¿Cómo se usa JSON Schema Validator?
- Pega o escribe tu esquema en «JSON Schema» y el JSON que quieres comprobar en «JSON». No se ejecuta nada mientras escribes.
- Pulsa «Validar».
- Lee el resultado junto a las entradas. Si el JSON cumple el esquema, el resultado lo indica. Si no, cada error es una línea: la ubicación en tu JSON, la palabra clave que falló entre paréntesis y una explicación. Si no se puede usar una entrada, el mensaje dice cuál es e indica la línea y la columna.
- Cuando haya errores, pulsa «Copiar» para ponerlos en el portapapeles, o «Descargar» para guardarlos como errors.txt.
Ejemplos
JSON que cumple el esquema
Pon el esquema en «JSON Schema», este JSON en «JSON» y pulsa «Validar». Se cumplen todas las reglas, así que el resultado dice que el JSON cumple el esquema.
{
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name"]
}{"name": "Ada", "age": 36}El JSON es válido según el JSON Schema.
Errores con su ubicación
Falta el name que exige el esquema, lo que se informa en # (el documento entero), y age está por debajo de su mínimo de 0, lo que se informa en #/age. Todos los errores se enumeran juntos, no solo el primero.
{
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name"]
}{"age": -3}El JSON no cumple el JSON Schema.
# (required): Falta la propiedad obligatoria "name".
#/age (minimum): -3 es menor que 0.Un tipo incorrecto y una propiedad extra
age es un texto, pero el esquema pide un entero. La propiedad extra no es un error, porque este esquema no define additionalProperties como false: un esquema permite todo lo que no prohíbe.
{
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name"]
}{"name": "Ada", "age": "x", "extra": 1}El JSON no cumple el JSON Schema.
#/age (type): El tipo "string" no es válido. Se esperaba "integer".Un esquema que la herramienta no puede usar
La herramienta admite draft-04, draft-06, draft-07, 2019-09 y 2020-12. Un $schema desconocido se rechaza, en lugar de validar con reglas que quizá no sean las que querías. El mensaje señala la entrada del esquema.
{"$schema": "https://example.com/meta"}{}El esquema declara un $schema que esta herramienta no admite. Admite JSON Schema draft-04, draft-06, draft-07, 2019-09 y 2020-12. Elimina $schema para usar 2020-12.
Límites y privacidad
Límites de tamaño
- Entrada: cada cuadro admite hasta 2.000.000 bytes de texto en UTF-8 (unos 2 MB), contados por separado. Las letras acentuadas y los emojis ocupan más de un byte cada uno. Una entrada mayor se rechaza.
- Anidamiento: hasta 256 niveles de objetos y listas dentro de otros. Un JSON más profundo se rechaza porque supera lo que procesa la herramienta.
- Tiempo: una ejecución que tarda más que su límite de tiempo se detiene. Prueba con una entrada más pequeña.
¿Se envía mi texto a un servidor?
No. El texto que escribes o pegas, o abres desde un archivo local, se procesa localmente en tu navegador, en un Web Worker dedicado. Nunca se sube ni se envía al servidor (un archivo que abres se lee solo en tu navegador), y no se escribe en el almacenamiento, en cookies ni en la barra de direcciones.
«Copiar» pone el resultado en el portapapeles y «Descargar» lo guarda como archivo, pero solo cuando pulsas el botón. El archivo se crea en tu navegador, así que no se sube nada.
Para conocer todos los detalles, consulta la Política de privacidad
Herramientas y páginas relacionadas
Tu texto se queda en la página cuando cambias de herramienta en la misma pestaña, así que puedes probar el mismo texto en otra. Recargar o cerrar la pestaña lo termina.