araç köşesi

Generar JSON Schema a partir de un JSON de ejemplo

Convierta un JSON de ejemplo en un borrador de JSON Schema con type, properties, items y required ya llenos

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

Un JSON Schema es un archivo de reglas que indica qué campos debe tener un documento JSON y de qué tipo; sirve para validar las solicitudes de una API o un archivo de configuración. En lugar de escribirlo desde cero, pegue un ejemplo real en el panel izquierdo: a la derecha aparece un esquema con type, properties, items y required ya llenos. En el ejemplo, el objeto "proveedor" recibe su propio bloque properties y el array "variantes" se describe con items. Los registros de un array se combinan: "oferta" solo aparece en la segunda variante, así que no entra en required, mientras que "diametro_cm" y "acabado" están en las dos y sí entran. 389.9 queda como number y 12 como integer; un campo que solo trae null, como "nota", recibe type null. Si un texto coincide exactamente con el formato date-time o email, se agrega format. El resultado es un borrador: los valores permitidos (enum), un mínimo (minimum) o un patrón (pattern) dependen de sus datos y los agrega usted.

Esta herramienta también se busca como generar json schema, json schema desde json, json to json schema, json schema generator, crear esquema json.

¿Qué es JSON Schema?

JSON Schema es un lenguaje de reglas que describe la estructura de un documento JSON usando el propio JSON: qué campos deben existir (properties, required), sus tipos (type), los elementos de un array (items) y los límites de valor (minimum, pattern, enum). Una biblioteca validadora lee el esquema, compara los datos que llegan y reporta cada diferencia con su ruta. Los documentos OpenAPI y el autocompletado de muchos editores se basan en él.

¿Qué es required y null?

En JSON Schema, required solo indica que un campo debe existir en el objeto; no dice nada de su valor. En {"nota": null} el campo existe y cumple required; para que el valor null pase, su tipo también debe incluir null. Un campo ausente y un campo con null son dos casos distintos, y esta herramienta los marca por separado.

¿Qué diferencia hay entre un JSON Schema y un JSON de ejemplo?

Un JSON de ejemplo es un solo dato: muestra un pedido tal como está en ese momento. Un JSON Schema escribe la regla que todos los pedidos deben cumplir: qué campos son obligatorios, de qué tipo y en qué rango. Deducir un esquema de un ejemplo da el esqueleto de esa regla, pero la herramienta no puede conocer casos que el ejemplo no muestra (otra moneda, una lista vacía, un nombre muy largo). Por eso alguien que conozca las reglas reales debe revisar el esquema generado y agregar los límites.

Cómo se deduce el esquema: combinación, null y tipos mezclados

La herramienta solo escribe lo que ve. Todos los registros de un array se combinan en un solo esquema; un campo presente en cada registro entra en required y uno que falta aunque sea una vez no entra. Un campo visto como null sigue siendo obligatorio, pero su tipo suma null: "type": ["string", "null"]. Si un campo muestra dos tipos (número en un registro, texto en otro), el esquema acepta ambos con anyOf. Si se mezclan enteros y decimales, el tipo común es number.

Un array vacío no dice nada de sus elementos, por eso se escribe items: {}, que admite cualquier valor. El format date, date-time o email se agrega solo si todos los valores del campo coinciden exactamente; un día imposible como 2026-02-30 no lo recibe. En draft 2020-12, format es solo una anotación por defecto: active la revisión de formatos en su validador (por ejemplo ajv-formats con Ajv).

  • {"a": 1} → "a": {"type": "integer"}, "required": ["a"]
  • [1, "x"] → "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}
  • [] → "items": {}
  • {"t": "2026-09-27T10:30:00-06:00"} → "format": "date-time"

Qué versión elegir y dónde usar el esquema

Draft 2020-12 es la versión actual; la soportan OpenAPI 3.1, la validación JSON de VS Code y las versiones recientes de Ajv y de jsonschema para Python. Si su herramienta solo conoce draft-07 (versiones antiguas de Ajv, algunos generadores de código), elija Draft-07. Aquí las dos salidas solo cambian en la línea $schema, porque las palabras clave usadas (type, properties, items, required, anyOf, format) significan lo mismo en ambas.

Use el esquema para validar solicitudes de API en el servidor, para dar autocompletado y marcas de error a un archivo de configuración en su editor o para documentar la forma de un archivo de datos dentro del equipo. Una lista required vacía da un esquema flexible que permite campos ausentes, útil cuando solo quiere revisar los tipos.

Preguntas frecuentes

¿Cómo generar un JSON Schema a partir de JSON?

Pegue un ejemplo de los datos que quiere validar en el panel izquierdo de esta página. A la derecha aparece un esquema con type, properties, items y required ya llenos. Cópielo o descárguelo y después agregue usted las reglas propias de sus datos, como enum, minimum o pattern.

¿Qué campos entran en la lista required?

Los que aparecen en todos los registros del ejemplo. Un campo que falta en uno solo de los registros de un array se considera opcional. Un campo con valor null se queda en required, pero su tipo suma null. Si no quiere ningún campo obligatorio, cambie la opción a Dejar vacía.

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

2020-12 es más reciente y agrega, por ejemplo, prefixItems para describir un array posición por posición, y $defs. Esta herramienta solo usa palabras clave que funcionan igual en ambas, así que la salida es idéntica salvo la línea $schema; elija la versión que soporte su validador.

¿El JSON que pego se envía a un servidor?

No. El esquema se deduce por completo en su navegador; ni siquiera un ejemplo con datos de clientes o datos internos sale de esta página. Una vez cargada, la página también funciona sin conexión.