Inicio › Herramientas para desarrolladores › Validador de JSON Schema

Validador de JSON Schema

Pega un JSON Schema a la izquierda y tus datos JSON a la derecha. La validación se ejecuta mientras escribes con el motor Ajv, y cada error muestra el puntero JSON, la palabra clave que falla y la línea en la que está. Haz clic en un error para ir a él.

Última actualización:

…
Validando…

Publicidad
Publicidad

Cómo usar Validador de JSON Schema

  1. Pega tu JSON Schema en el editor de la izquierda o sube un archivo de esquema .json. Elige un ejemplo para empezar con algo hecho.
  2. Pega los datos JSON que quieres comprobar en el editor de la derecha.
  3. Elige el draft o déjalo en Auto para usar la palabra clave $schema. La validación se ejecuta mientras escribes.
  4. Lee el resultado. Verde significa que los datos son válidos. Si no, cada error indica el puntero JSON, el mensaje y la palabra clave del esquema que falló.
  5. Haz clic en un error para seleccionar el valor problemático en el editor de datos, corrígelo y mira cómo se actualiza la lista.

Palabras clave de JSON Schema de un vistazo

Un JSON Schema es a su vez un objeto JSON formado por palabras clave. Cada palabra clave añade una regla, y los datos solo son válidos cuando se cumplen todas las reglas. Estas son las palabras clave que más usarás:

Se aplica aPalabras claveEjemplo
Cualquier valortype, enum, const{"type": ["string", "null"]}
CadenasminLength, maxLength, pattern, format{"type": "string", "format": "email"}
Númerosminimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf{"type": "integer", "minimum": 0}
Objetosproperties, required, additionalProperties, patternProperties, propertyNames, minProperties{"required": ["id"], "additionalProperties": false}
Arraysitems, prefixItems, minItems, maxItems, uniqueItems, contains{"type": "array", "items": {"type": "string"}}
CombinaciónallOf, anyOf, oneOf, not, if / then / else{"anyOf": [{"type": "string"}, {"type": "number"}]}
Reutilización$ref, $defs (2019-09+), definitions (draft-07), $anchor{"$ref": "#/$defs/address"}

Cómo leer la lista de errores

Cada error tiene tres partes. La ruta es un JSON Pointer al valor en tus datos; por ejemplo, /items/1/price es el precio del segundo elemento. La palabra clave es la regla del esquema que falló, como required o pattern. La ruta del esquema apunta a esa regla dentro del esquema, como #/$defs/item/properties/price/minimum, para que sepas si hay que corregir los datos o el esquema.

Cuando un valor no cumple anyOf u oneOf, el validador indica por qué falló cada rama (con sangría) seguido del error resumen. Normalmente solo una rama debía aplicarse, así que busca los errores bajo la rama que corresponde a tu intención. Un truco habitual es añadir un discriminador const, como "type": {"const": "click"}, a cada rama.

Errores comunes en los esquemas

  • Las erratas en las palabras clave se ignoran sin avisar. "minLenght": 3 o "require": ["id"] son palabras clave desconocidas, así que no se comprueba nada. Si una regla parece no tener efecto, revisa la ortografía.
  • required pertenece al objeto, no a la propiedad. Escribe {"properties": {"id": {...}}, "required": ["id"]}, no {"id": {"required": true}} (esa era la sintaxis de draft-03).
  • additionalProperties: false no ve a través de allOf. Las propiedades declaradas en otro subesquema cuentan como adicionales. Usa unevaluatedProperties: false (2019-09 y posteriores) al combinar esquemas.
  • items en forma de array es una tupla solo antes de 2020-12. En 2020-12 usa prefixItems para las posiciones e items para el resto.
  • integer acepta 1.0. JSON Schema compara los números matemáticamente, así que 1.0 es un entero válido pero 1.5 no.

Preguntas frecuentes

¿Qué es un validador de JSON Schema?

Comprueba si un documento JSON cumple las reglas de un JSON Schema: las propiedades obligatorias, los tipos de datos, los valores permitidos, los patrones de cadenas, los rangos de números y las longitudes de los arrays. El resultado es válido o una lista con cada regla que incumplen los datos.

¿Qué drafts de JSON Schema se admiten?

Draft-07 (que también cubre la mayoría de los esquemas draft-04 y draft-06), draft 2019-09 y draft 2020-12. Deja el draft en Auto y el validador leerá la palabra clave $schema; un esquema sin $schema se trata como draft-07.

¿Qué significa la ruta del error?

La ruta es un JSON Pointer (RFC 6901) al valor que falló. /items/2/price significa la propiedad price del tercer elemento del array items; una ruta vacía significa el valor raíz. La ruta del esquema muestra qué palabra clave del esquema produjo el error.

¿Se comprueban formatos como email y date-time?

Sí, cuando Comprobar formatos está activado. El validador entiende date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex y json-pointer. En el estándar JSON Schema, format es solo una anotación salvo que el validador decida exigirla, así que puedes desactivarlo.

¿Puede resolver $ref a otros archivos o URL?

Resuelve las referencias dentro del mismo esquema, como #/definitions/address, #/$defs/item, nombres $anchor y referencias basadas en $id. Las referencias remotas a otros archivos o URL no se descargan, así que primero incluye esas definiciones dentro de $defs.

¿Qué diferencia hay entre draft-07 y 2020-12?

2020-12 renombró definitions a $defs, sustituyó items en forma de array por prefixItems, dividió dependencies en dependentRequired y dependentSchemas, y añadió unevaluatedProperties, unevaluatedItems, minContains y maxContains. El draft 2019-09 introdujo la mayoría de estos cambios.

¿Se envían mis datos a un servidor?

No. El esquema y el JSON se validan con JavaScript en tu navegador, así que las cargas privadas de API y los archivos de configuración nunca salen de tu dispositivo.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Formateadores y validadores de código →