Cómo generar un JSON Schema
- Pega un ejemplo JSON representativo. Los arrays con varios elementos dan los mejores resultados, porque sus elementos se combinan en un único schema.
- Elige la versión del schema (draft 2020-12 o draft-07) e indica si las propiedades deben ser requeridas, si se detectan formatos y si se prohíben propiedades adicionales.
- Copia o descarga el schema y luego ajústalo a mano: por ejemplo, añade descripciones, enums o valores mínimos y máximos.
Qué deduce el generador
| Ejemplo JSON | Schema |
|---|---|
"ada@example.com" | {"type": "string", "format": "email"} |
"2026-05-01T10:00:00Z" | formato date-time (también date, time, uri, uuid, ipv4) |
42 / 4.5 | "integer" / "number" |
| una clave presente en todos los objetos | incluida en required |
| una clave que falta en algunos elementos del array | opcional (no está en required) |
[1, "a", null] | "items": {"type": ["string", "integer", "null"]} |
| objetos mezclados con valores simples | anyOf con un schema para cada tipo |
¿Qué es JSON Schema?
JSON Schema es un vocabulario para describir y validar la estructura de los datos JSON: qué propiedades existen, qué tipo tiene cada una, cuáles son obligatorias y qué valores se permiten. Se usa para contratos de API en OpenAPI, archivos de configuración, generación de formularios y validación de la salida estructurada de modelos de IA. La versión actual es la 2020-12; muchas herramientas antiguas siguen admitiendo draft-07. La especificación está publicada en json-schema.org.
Cómo ajustar el schema generado
- Añade
titleydescriptionpara documentar qué significa cada campo. - Restringe los valores con
enum,minimum,maximum,maxLengthopattern. - Marca No permitir propiedades adicionales (
additionalProperties: false) para rechazar claves desconocidas. - Valida los datos con Ajv en JavaScript o con el paquete
jsonschemaen Python.
Preguntas frecuentes
¿Qué versión de JSON Schema debo usar?
Usa draft 2020-12 en proyectos nuevos: es la versión actual y la base de OpenAPI 3.1. Elige draft-07 si tu validador o tus herramientas todavía no admiten 2020-12.
¿Por qué todas mis propiedades son requeridas?
Con un único objeto de ejemplo todas las propiedades están presentes, así que todas se marcan como requeridas. Usa un array con varios ejemplos distintos o desactiva Marcar las propiedades como requeridas.
¿Puede el generador detectar enums o rangos?
No. Un solo ejemplo no puede mostrar qué valores se permiten en general, así que los enums, los valores mínimos y máximos y los patrones hay que añadirlos a mano.
¿Cómo valido un JSON con el schema?
Usa una librería de validación como Ajv para JavaScript o jsonschema para Python. Muchos editores de código también validan un archivo JSON con el schema indicado en su propiedad $schema.