Generador y Validador de JSON Schema

Genera un JSON Schema a partir de una muestra o valida un documento JSON contra uno, directo en tu navegador. Tus datos nunca salen de tu dispositivo.

La generación del esquema y la validación con Ajv se ejecutan localmente en tu navegador, así que tu muestra JSON, esquema y documento nunca se suben.

¿Necesitas tipos de TypeScript en su lugar? Prueba JSON a TypeScript.

Acerca de JSON Schema

Este generador de JSON Schema convierte una muestra JSON en un JSON Schema listo para usar, y el validador integrado comprueba cualquier documento JSON contra un esquema que proporciones. En el modo Generar recorre tu muestra, infiere tipos para objetos, arreglos, cadenas, números, booleanos y null, unifica los elementos de los arreglos y puede marcar cada propiedad como requerida, fijar additionalProperties en false y detectar formatos de cadena como email, date, date-time, uri y uuid. Elige draft-07 o 2020-12 para la salida. En el modo Validar ejecuta Ajv con allErrors y ajv-formats, luego enumera cada fallo con su ruta de instancia y mensaje. Está pensado para personas que desarrollan API, ingenieros de backend y cualquiera que defina o pruebe contratos JSON. Todo se ejecuta en tu navegador, así que la muestra y el esquema que pegas permanecen en tu dispositivo.

Características

Cómo usar JSON Schema

  1. Elige Generar para construir un esquema, o Validar para comprobar un documento.
  2. En Generar, pega una muestra JSON y activa las opciones required, additionalProperties y de formato.
  3. Elige draft-07 o 2020-12, luego copia o descarga el schema.json resultante.
  4. En Validar, pega un JSON Schema a la izquierda y un documento JSON a la derecha.
  5. Lee la insignia de válido/inválido y la lista de errores, cada uno con una ruta de instancia.

Ejemplo

Entrada

{
  "id": 1,
  "name": "Ada",
  "email": "ada@example.com",
  "tags": ["a", "b"]
}

Salida

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "email": { "type": "string", "format": "email" },
    "tags": { "type": "array", "items": { "type": "string" } }
  },
  "required": ["id", "name", "email", "tags"]
}

Con la inferencia de required y de formato activada, la muestra produce un esquema draft-07.

Errores comunes y solución de problemas

Preguntas frecuentes

¿Qué draft de JSON Schema usa el generador?
Draft-07 por defecto, con una opción para 2020-12. La elección define la URL del dialecto $schema en la salida y las diferencias menores entre los drafts; por lo demás la estructura inferida es la misma.
¿Cómo se deciden las propiedades requeridas al generar un esquema?
Por defecto ninguna propiedad se marca como requerida, así que el esquema acepta objetos parciales. Activa «Marcar todas las propiedades como requeridas» para añadir cada clave de cada objeto a su arreglo required.
¿Cómo reporta los errores el validador?
Ejecuta Ajv con allErrors habilitado, así que obtienes todos los fallos a la vez. Cada error muestra la ruta de instancia JSON (como /items/0/id) y un mensaje legible, incluidas las claves requeridas faltantes y las propiedades adicionales inesperadas.
¿El generador infiere formatos de cadena como email o date?
Sí, cuando «Inferir formatos de cadena» está activado. Comprueba los valores de cadena de la muestra contra patrones de email, date, date-time, uri y uuid y añade la palabra clave format correspondiente; los valores que no coinciden con ninguno se quedan como cadenas simples.
¿Cómo infiere el esquema para los arreglos?
Fusiona los esquemas de todos los elementos del arreglo en un solo esquema items. Los elementos de objeto mixtos se fusionan propiedad por propiedad, una clave que falte en algún elemento sale de required, y un arreglo vacío pasa a items:{}.
¿Se sube a algún lado mi muestra JSON o mi esquema?
No. La generación y la validación, incluido Ajv, se ejecutan por completo en tu navegador, así que la muestra, el esquema y el documento que pegas se procesan localmente y permanecen en tu dispositivo.

Herramientas relacionadas

Todas las herramientas de ArrayKit