DevToolPal
ES

Validador de JSON Schema

Valida datos JSON contra un JSON Schema (2020-12, 2019-09, draft-07 o draft-04) y muestra cada error con su ruta.

Se ejecuta en local, nunca se sube

Opciones

Datos JSON

JSON Schema

Resultado de la validación

El resultado aparece aquí

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

  1. 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.
  2. 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.
  3. Deja Versión en Automática para seguir $schema o fuerza una versión. Desactiva Mostrar todos los errores para detenerte en el primer fallo.
  4. 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.