Validador de JSON Schema y generador de borradores

Pega un esquema y los datos para ver dónde no encajan; Generar convierte una muestra en un esquema borrador y comprueba que el borrador la acepta. Nada sale del navegador.

Se ejecuta localmente en tu navegador
JSON Schema

Usa un objeto JSON Schema; las referencias que empiezan por #/ se resuelven dentro de esta página.

Datos JSON

Pega datos para validarlos o una muestra representativa para generar un esquema inicial.

Resultado de la validación
Introduce un JSON Schema y datos JSON y, a continuación, selecciona Validar JSON.

Comprobaciones incluidas en este validador local

El validador lee type, enum, const, allOf, anyOf, oneOf, not e if/then/else; properties, patternProperties, additionalProperties, propertyNames, required, dependentRequired, minProperties y maxProperties; items, prefixItems, additionalItems, minItems, maxItems, uniqueItems y contains; minLength, maxLength, pattern y los formatos email, uuid, date, time, date-time, uri, uri-reference, ipv4, ipv6 y hostname; minimum, maximum, exclusiveMinimum, exclusiveMaximum y multipleOf; y valores locales de $ref, incluidas las referencias que recorren los datos. También se leen la forma booleana de exclusiveMinimum/exclusiveMaximum de draft-04 y la forma de array de items. Cualquier otra palabra clave o formato se deja pasar, así que confirma las reglas de producción con un validador conforme.

Comprueba un payload contra su esquema en esta pestaña

El esquema y los datos se quedan en el navegador; no se sube nada. Cada problema se lista con la ruta donde se encontró, la lista se corta tras 100 problemas, y Generar escribe un esquema borrador a partir de tu muestra y vuelve a comprobar esa muestra contra él.

Cómo comprobar JSON contra un esquema

Pega un JSON Schema y un documento JSON para ver todos los puntos en los que los datos incumplen el esquema. La comprobación se ejecuta en esta pestaña: no se sube nada y la herramienta sigue funcionando sin conexión.

Generar funciona al revés. Lee tu muestra, escribe un esquema borrador —elementos de array combinados entre todos los elementos, required limitado a las claves que llevan todos los objetos— y valida la muestra contra ese borrador, así que un borrador que no describe su propia muestra se avisa en lugar de guardarse en silencio.

  1. Pega el esquema en el campo JSON Schema y el documento en el campo de datos JSON. Se siguen las referencias locales como #/$defs/address; una referencia a otro archivo se avisa como no admitida aquí.
  2. Selecciona Validar JSON. Cada problema aparece con la ruta donde se encontró, por ejemplo $.users[2].email, y con la regla que falló. La lista se corta tras 100 problemas y lo indica.
  3. Selecciona Generar esquema a partir de los datos para crear un borrador desde la muestra. El borrador sustituye el contenido del campo del esquema y la muestra se comprueba contra él al momento.
  4. Copiar esquema copia el campo del esquema, Cargar ejemplo rellena ambos campos con un payload de API pequeño que pasa, y Limpiar vacía los dos campos y el resultado. Si editas un campo después de un resultado, el veredicto antiguo se atenúa y te pide repetir la comprobación.

Qué lee el validador y qué deja pasar

Qué lee el validador

type, enum, const, allOf, anyOf, oneOf, not e if/then/else; properties, patternProperties, additionalProperties, propertyNames, required, dependentRequired, minProperties y maxProperties; items, prefixItems, additionalItems, minItems, maxItems, uniqueItems y contains; minimum, maximum, exclusiveMinimum, exclusiveMaximum y multipleOf; minLength, maxLength y pattern; y valores locales de $ref, incluidas las referencias que recorren los datos. También se leen la forma booleana de exclusiveMinimum/exclusiveMaximum de draft-04 y la forma de array de items.

Las comprobaciones de formato cubren email, uuid, date, time, date-time, uri, uri-reference, ipv4, ipv6 y hostname. Una fecha como 2024-02-30 y una hora como 99:99 se rechazan porque se comprueban el calendario y el reloj, no solo la forma del texto; cualquier otro nombre de formato se deja pasar. La especificación trata format como anotación, así que esta página es más estricta que un lector básico.

Respuestas que no dependen del orden de las claves

enum, const y uniqueItems comparan valores de forma estructural: {"a": 1, "b": 2} y {"b": 2, "a": 1} son un solo valor, no dos. La versión anterior de esta herramienta comparaba el texto JSON y fallaba en los dos sentidos: rechazaba un valor enum válido y aceptaba un elemento duplicado en el array.

minLength y maxLength cuentan puntos de código, así que un emoji escrito como par suplente cuenta como un carácter.

Borrador de esquema a partir de una muestra

Los elementos de un array se combinan entre todos los elementos: un array mixto produce una lista anyOf, y los objetos se combinan propiedad a propiedad, con required limitado a las claves que llevan todos los objetos. Un objeto o un array vacío no genera una lista required vacía.

Las cadenas que parecen un UUID, un correo, una fecha, una fecha-hora o un URI reciben la pista de formato correspondiente, así que el borrador es más útil que un tipo pelado: sirve para una primera pasada, no como contrato.

Límites

La lista de problemas se corta en 100 entradas. Una anidación de más de 4000 niveles detiene la comprobación con un mensaje en lugar de tumbar el navegador, y una referencia #/ circular se avisa en lugar de seguirse sin fin.

Los patrones y formatos usan el motor de expresiones regulares del navegador; 20.000 elementos de array o propiedades de objeto se comprueban en unos 20 ms.

Herramientas recientes: