Generador de Esquema JSON
Pega una o varias muestras JSON y el generador infiere un Esquema JSON que puedes usar para validar nuevas cargas. Detecta tipos, marca campos como requeridos cuando aparecen en cada muestra, infiere enums cuando los valores provienen de un pequeño conjunto cerrado, y produce una salida que cumple con el borrador de Esquema JSON 2020-12.
Cómo generar un Esquema JSON
-
1
Pega documentos de muestra
Uno o varios payloads reales, cuanta más variedad, más preciso será el esquema inferido.
-
2
Elige el borrador
Borrador 2020-12 (actual), borrador 07 (ampliamente soportado) o borrador 04 (OpenAPI legado).
-
3
Ajusta la inferencia
Activa la inferencia de enums, estrategia de campos requeridos (intersección vs unión), y si marcar todos los campos como `requeridos` cuando solo se da una muestra.
-
4
Generar
El esquema se emite con `$schema`, `title`, `type`, `properties`, y `$ref`s anidados para sub-objetos repetidos.
Lo que la inferencia hace bien
- Tipos: string, number, integer, boolean, null, array, object.
- Nullabilidad: un campo que es
nullen una muestra y un string en otra se convierte en["string", "null"]. - Elementos de array: arrays homogéneos producen un único esquema
items; arrays heterogéneos producenprefixItems. - Enumeraciones (enum): si todos los valores observados provienen de un pequeño conjunto (configurable, por defecto 10 valores distintos), emite un
enum. - Requeridos: con múltiples muestras, la intersección de claves se convierte en
required; con una muestra, todas las claves son requeridas a menos que optes por no incluirlas. - Formatos: strings que coinciden con fechas ISO-8601, correos electrónicos o URIs obtienen un
formatinferido.
Lo que la inferencia no puede saber
- Intención vs ejemplo: una muestra
age: 25infieretype: integer, pero no puede saber que también aceptasnull. Pasa múltiples muestras que cubran casos extremos. - Restricciones:
minLength,maximum,pattern, debes añadir estos manualmente. La inferencia no adivina límites a partir de muestras. - Lógica de negocio: “exactamente uno de estos tres campos debe estar establecido” requiere
oneOf, no es inferible. - Referencias: el generador emite un esquema plano. Si deseas factorizar formas repetidas en
$defs, hazlo después de la generación.
Ejemplo de salida
De una sola muestra:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
El esquema inferido (borrador 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
Errores comunes
- Inferir de una sola muestra. El esquema se ajustará demasiado, cada campo se vuelve requerido, sin tolerancia a null. Siempre proporciona al menos 5-10 muestras variadas.
- Usar
integercuando queríasnumber. Si alguna muestra tiene un decimal, el tipo inferido se convierte ennumber; si todas son enteras, se convierte eninteger. Para campos que podrían ser cualquiera, incluye una muestra decimal. - Olvidar campos opcionales. Un campo presente en 4 de 5 muestras pero ausente en 1 se convierte en opcional, intencionado. Si las 5 muestras lo incluyen, el esquema lo marcará como requerido aunque en realidad sea opcional en tu API.
Preguntas frecuentes
Cuantas más, mejor, pero 5-10 muestras variadas suelen producir un esquema razonable. Con una muestra, cada campo se vuelve requerido y la nullabilidad no puede ser inferida, siempre proporciona múltiples variantes si puedes.
Borrador 2020-12 por defecto. Los borradores 07 y 04 están disponibles para compatibilidad con OpenAPI 3.0 (que utiliza un subconjunto de borrador 05/07).
No. Inferir restricciones sensatas a partir de muestras ajustaría demasiado el esquema. Añade minLength, maximum, pattern, etc. manualmente después de la generación según tus reglas de negocio.
Sí. Si pegas un array JSON, el generador trata cada elemento como una muestra separada y produce un esquema que describe un elemento individual, no el array exterior. Activa “tratar como contenedor de array” si deseas la forma del array exterior en su lugar.
Herramientas relacionadas
Referencia de la tabla ASCII
Tabla ASCII completa del 0 al 127 con decimal, hex, octal, binario y referencia numérica HTML para cada carácter, incluidos los códigos de control como NUL, LF y DEL.
Referencia de caracteres HTML
Lista buscable de entidades HTML, sus códigos nombrados y numéricos, y una copia con un clic para caracteres y símbolos especiales.
Referencia de atajos de teclado
Busca los atajos predeterminados documentados de VS Code, Chrome y Bash con GNU Readline en macOS, Windows y Linux.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Generador de Paletas de Color
Genera paletas monocromáticas, análogas, complementarias, triádicas o tetrádicas desde un color base HEX y exporta variables CSS listas para copiar.
Generador de EditorConfig
Genera un archivo .editorconfig con tu estilo y tamaño de indentación, fin de línea, charset y reglas de espacios para un formato consistente en IDEs y editores.
Herramienta disponible en otros idiomas
- Trình tạo JSON Schema [VI]
- JSON-Schema-Generator [DE]
- Gerador de Esquema JSON [PT]
- JSON 스키마 생성기 [KO]
- เครื่องมือสร้าง JSON Schema [TH]
- مولّد مخطط JSON [AR]
- JSON-schemagenerator [SV]
- JSON-schemagenerator [NL]
- Générateur de schéma JSON [FR]
- Generator JSON Schema [ID]
- JSONスキーマジェネレーター [JA]
- Generator schematów JSON [PL]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]