Ayuda

Validador JSON Schema online: errores con ruta y motivo

Con este validador JSON Schema pegas un esquema y los datos JSON, y ves al instante si coinciden. Si no, cada error aparece con la ruta hasta el valor que falló y un motivo en lenguaje claro, como $.users[0].email. Admite draft-07, 2019-09 y 2020-12, y los dos cuadros se quedan en tu dispositivo.


Validar JSON online con schema, paso a paso

  1. Pega tu esquema en el cuadro Esquema JSON (muestra “Pega aquí tu esquema JSON...”).
  2. Pega los datos que quieres comprobar en el cuadro Datos JSON.
  3. Lee el Resultado. Se actualiza al pegar, o unos 300 milisegundos después de que dejes de escribir, así que no hay nada que pulsar.
  4. Un Válido en verde con “Los datos JSON cumplen el esquema.” significa que los datos pasan. Un “No válido: 3 errores” en rojo muestra cada fallo en una lista.
  5. Corrige los datos (o el esquema) y el resultado cambia mientras editas.

Mientras falte uno de los dos cuadros, el resultado dice “Pega un esquema y los datos JSON para comprobarlos.” Si un cuadro contiene texto que no es JSON, aparece un aviso rojo JSON no válido con el motivo y “Línea X, columna Y”, y el resultado te indica qué cuadro arreglar. Si antes quieres ordenar un documento desordenado, “Formateador de JSON” muestra la misma línea y columna para el JSON roto.

Cómo leer los errores: ruta y motivo

Cada error tiene dos partes: una ruta y un motivo. La ruta empieza en $, la raíz de tus datos, y sigue los nombres de propiedad con puntos y las posiciones de array entre corchetes, contando desde 0. Ejemplo: el esquema exige id como entero desde 1, email con formato email y tags sin repetidos; los datos son {"id":"7","email":"ana@","tags":["a","a"]}. El resultado dice “No válido: 3 errores”:

Se listan todos los errores, no solo el primero, así que puedes arreglar un documento entero de una vez. Tras 100 errores la lista termina con una línea como “y 250 errores más sin mostrar”; el número del encabezado sigue siendo exacto. Si falta una propiedad obligatoria (required), el error aparece en la ruta del objeto que debería contenerla, por ejemplo $.users[0]. Las palabras clave menos habituales (not, contains, propertyNames, dependentRequired y if/then/else) también tienen su motivo claro.

Modo estricto: additionalproperties false

Por defecto, un esquema permite propiedades de más: unos datos con un campo nick que el esquema nunca menciona pasan igualmente. Activa Modo estricto (“Falla si los datos tienen propiedades que el esquema no incluye.”) para detectar erratas y restos. Con el esquema de arriba y los datos {"id":1,"email":"ana@example.com","nick":"x"}, sin el modo el resultado es “Válido”, y con él “No válido: 1 error” en $: Propiedad inesperada “nick”.

Tras el interruptor, la herramienta añade unevaluatedProperties: false al esquema raíz y a cada esquema de propiedad o de elemento que describe un objeto, y también funciona a través de $ref. Tu texto en el cuadro no se modifica.

Versiones de JSON Schema, $ref y formatos

La herramienta lee la línea "$schema" de tu esquema y comprueba los datos con las reglas que corresponden: http://json-schema.org/draft-07/schema# se trata como draft-07, https://json-schema.org/draft/2019-09/schema como 2019-09 y https://json-schema.org/draft/2020-12/schema como 2020-12. Sin "$schema" se aplica 2020-12, o 2019-09 si hay sintaxis antigua como un array en items. Draft-04, draft-06 o cualquier otra dirección no se admiten, y el resultado indica qué dirección declara el esquema. Importa porque algunas palabras clave cambiaron entre versiones: prefixItems es de 2020-12 y definitions pasó a $defs en 2019-09. Las dos formas de la ruta de referencia funcionan: #/$defs/name y #/definitions/name.

Límites y privacidad


Preguntas frecuentes

¿Cómo puedo validar JSON con schema desde el navegador?

Pega el esquema en el cuadro “Esquema JSON” y los datos que quieres comprobar en “Datos JSON”. El resultado aparece al instante al pegar, o unos 300 milisegundos después de dejar de escribir. Un “Válido” en verde significa que los datos coinciden; un “No válido” en rojo lista cada error con su ruta y su motivo. No hay ningún botón que pulsar.

¿Qué versiones de JSON Schema admite: draft-07, 2019-09 o 2020-12?

Las tres. La versión sale de la línea “$schema” de tu esquema. Un esquema sin “$schema” se comprueba como 2020-12, o como 2019-09 si usa sintaxis antigua como un array en items. Los esquemas que declaran draft-04, draft-06 u otra dirección de $schema se señalan como no admitidos.

¿Qué significa una ruta como $.users[0].email?

Es la ubicación del valor que falló. $ es la raíz de tus datos JSON, .users es la propiedad users, [0] es el primer elemento de ese array (se cuenta desde 0) y .email es la propiedad que contiene. Una ruta como $.users[2].address.zip conduce al valor del mismo modo, paso a paso.

¿Qué significa el error de JSON Schema required y por qué se indica en el objeto padre?

Porque la propiedad no existe y no hay nada a lo que apuntar. El error se muestra en la ruta del objeto que debería contenerla, por ejemplo $.users[0], con el motivo “Falta la propiedad obligatoria “email”.” Añade la propiedad a ese objeto y el error desaparece.

¿Cómo hago que el esquema rechace propiedades de más (additionalproperties false)?

Activa “Modo estricto”. Añade unevaluatedProperties: false a la raíz y a cada esquema de propiedad o de elemento que describa un objeto, de modo que cualquier propiedad que el esquema no incluya falle con “Propiedad inesperada”. Los esquemas que ya definen additionalProperties o unevaluatedProperties conservan su decisión.

¿Comprueba formatos como email, date-time, uri y uuid?

Sí. La palabra clave “format” se comprueba, de modo que una dirección como ana@ falla en una cadena con “format”: “email” y muestra “Debe cumplir el formato “email”.” Se cubren los formatos habituales, entre ellos email, date, date-time, time, uri, uuid, ipv4, ipv6 y hostname.

¿Puede seguir un $ref a otro archivo o a una URL?

Solo dentro del mismo esquema, como #/$defs/name o #/definitions/name. No se descarga nada, así que una referencia como https://example.com/address.json se señala como una referencia que el esquema no define. Copia el esquema referenciado en tu $defs y apunta el $ref allí.

¿Qué significa “El propio esquema no es válido”?

Que el esquema incumple las reglas de JSON Schema, por ejemplo con “type”: “strng” o un “minimum” escrito como texto. El resultado lista los problemas con rutas que apuntan dentro del esquema. Los datos no se comprueban hasta que se corrige el esquema.

¿Se sube algo si uso este JSON Schema validator online?

No. Este validador de JSON online funciona en tu navegador: el esquema y los datos se comprueban por completo en tu navegador. No se sube ni se guarda nada, y no necesitas una cuenta.

Recomendado

Ayuda a mantener las herramientas gratis. ✨

Imágenes meramente ilustrativas. En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables.