Generador de JSON Schema

Genera automáticamente definiciones de JSON Schema conformes al estándar a partir de datos JSON

Entrada JSON
Líneas: 1 | Caracteres: 0
Salida JSON Schema
// El JSON Schema se generará automáticamente
Propiedades: 0 | Líneas: 1

Opciones de Configuración

Schema ID
Establece un identificador único para el Schema, típicamente en formato URI, usado para referenciar e identificar Schema en sistemas grandes
Todos los Campos Requeridos
Cuando está habilitado, todas las propiedades se añaden al array required, lo que significa que estos campos deben existir en los datos
Añadir Valores por Defecto
Genera automáticamente la propiedad default basándose en los valores reales del JSON de ejemplo, útil para archivos de configuración
Añadir Descripciones de Campo
Añade automáticamente el campo description para cada propiedad, describiendo el tipo de datos y origen, útil para documentación
Modo Estricto
Habilita additionalProperties: false para prohibir propiedades extra no definidas, asegurando consistencia estricta de estructura de datos

¿Qué es JSON Schema?

JSON Schema es una especificación para describir y validar estructuras de datos JSON. Define reglas para estructura, tipos de datos, restricciones y se usa ampliamente para validación de API, validación de formularios, verificación de archivos de configuración, etc.

Con JSON Schema, puedes:

  • Validación de Datos: Verificar que los datos JSON coinciden con el formato y restricciones esperados
  • Generación de Documentación: Generar automáticamente documentación de API y definiciones de tipos
  • Inteligencia de Código: Obtener autocompletado inteligente y verificación de tipos en IDEs
  • Pruebas Automatizadas: Validar automáticamente el formato de datos de respuesta en pruebas

Esta herramienta soporta la especificación JSON Schema Draft-07, infiriendo inteligentemente objetos anidados, tipos de array, valores enum y otras estructuras complejas.

Cómo Usar

  1. Pega datos JSON en el cuadro de entrada izquierdo, o haz clic en Ejemplo para cargar datos de ejemplo
  2. Configura las opciones: establece Schema ID, elige si todos los campos son requeridos, añade valores por defecto, etc.
  3. La definición JSON Schema correspondiente se genera automáticamente a la derecha
  4. Haz clic en Copiar para copiar el Schema generado al portapapeles
  5. Usa el Schema para validación de API, validación de formularios o verificación de archivos de configuración

Ejemplos

Schema de Objeto Simple

输入 JSON:
{
  "name": "张三",
  "age": 28,
  "isActive": true
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Object with 3 properties",
  "properties": {
    "name": {
      "type": "string",
      "description": "String value"
    },
    "age": {
      "type": "integer",
      "description": "Number value"
    },
    "isActive": {
      "type": "boolean",
      "description": "Boolean value"
    }
  },
  "required": ["name", "age", "isActive"]
}

Objetos Anidados y Arrays

输入 JSON:
{
  "user": {
    "id": 1,
    "profile": {
      "avatar": "url",
      "skills": ["JS", "TS"]
    }
  }
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "skills": {
              "type": "array",
              "items": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Ejemplo de Validación de Datos

使用 Ajv 验证数据:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);

const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };

console.log(validate(validData));    // true
console.log(validate(invalidData));  // false
console.log(validate.errors);        // 错误详情

Preguntas Frecuentes (FAQ)

Q: ¿Cuáles son los casos de uso comunes para JSON Schema?

A: JSON Schema se usa principalmente para: validación de solicitudes/respuestas de API, validación de datos de formularios, verificación de formato de archivos de configuración, restricciones de documentos de base de datos, validación de datos en pruebas automatizadas, configuración de autocompletado en IDE. Es una herramienta importante para la especificación de datos en el desarrollo web moderno.

Q: ¿Qué versión de Schema genera esta herramienta?

A: Esta herramienta genera Schema siguiendo la especificación JSON Schema Draft-07, la versión más ampliamente soportada, compatible con la mayoría de bibliotecas de validación y cadenas de herramientas.

Q: ¿Cómo se manejan los tipos de array complejos?

A: La herramienta analiza automáticamente la estructura de elementos del array. Si los elementos son objetos, se genera la definición items; si los tipos son inconsistentes, se usa anyOf u oneOf para representar múltiples tipos posibles; los arrays vacíos generan una definición items vacía.

Q: ¿Qué significa el campo required?

A: required es un array de strings que lista los nombres de propiedades que deben existir. Si una propiedad está en required, no puede faltar durante la validación. Las propiedades que no están en required son opcionales.

Q: ¿Cómo usar el Schema generado en proyectos?

A: Usa bibliotecas de validación como Ajv, jsonschema para validación de datos. En Node.js: const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);. Frameworks frontend como React, Vue tienen componentes de validación de formularios que soportan JSON Schema.

Q: ¿Qué hace additionalProperties: false?

A: Este ajuste prohíbe propiedades extra no definidas en el Schema. Útil para escenarios que necesitan control estricto de estructura de datos, previniendo contaminación de campos accidentales, pero puede causar problemas de compatibilidad si es demasiado estricto.

Q: ¿Puedo añadir reglas de validación personalizadas?

A: Sí, edita manualmente el Schema después de generar para añadir más restricciones. JSON Schema soporta palabras clave de validación ricas: minimum/maximum (rango numérico), minLength/maxLength (longitud de string), pattern (coincidencia regex), enum (valores enum), format (formatos predefinidos como email, uri), etc.

Q: ¿Cómo generar JSON Schema desde tipos TypeScript?

A: Esta herramienta infiere Schema desde datos JSON. Para generar desde tipos TypeScript, usa herramientas como typescript-json-schema, o primero crea datos JSON de ejemplo y luego usa esta herramienta.