Ir al contenido principal
Bethemesh

Generar JSON Schema

Analiza un documento JSON e infiere tipos, propiedades, arrays y campos requeridos automáticamente.

  • Portapapeles
  • Exportar
Automatizar

Integrar este widget

Personaliza el aspecto, comprueba la vista previa y copia el código.

Vista previa

Tipo de código de integración

Código para copiar

Se adapta a tu página y Bethemesh ajusta su tamaño automáticamente.

¿Te ha resultado útil esta herramienta?

¿Cómo funciona esta herramienta?

Crea un primer JSON Schema a partir de un documento JSON representativo. El generador identifica tipos, objetos anidados, listas y propiedades observadas para describir una estructura reutilizable con draft 2020-12. El resultado es una propuesta que revisar, no el descubrimiento automático de todas las reglas de tu API. No se sube el documento a un servicio: tu navegador analiza el ejemplo y muestra un esquema JSON para examinar, copiar o exportar.

Las cadenas pasan a string, booleanos a boolean y null a null. Se distinguen enteros observados de otros números. Los objetos producen properties; los arrays infieren items con todos los elementos, no solo el primero. Las variantes de tipo pueden representarse mediante anyOf.

Se combinan propiedades de objetos del mismo array. Si una clave falta en algunos objetos, no se añade a required; si siempre aparece, sí. Esto solo refleja la muestra. Una respuesta que contiene un campo opcional según el contrato real no permite deducir que pueda omitirse.

Los objetos usan additionalProperties: false, rechazando claves no observadas aunque tu aplicación las aceptase. Revisa esta política antes de validar respuestas futuras. Un array vacío no informa de sus elementos futuros; su esquema queda abierto en lugar de inventar un tipo.

La inferencia no deduce formatos de correo, expresiones regulares, límites numéricos ni listas exhaustivas de valores. Una fecha sigue siendo cadena. Observar 1 no demuestra minimum: 1 ni const: 1. Los números usan la representación del navegador; conserva identificadores grandes como cadenas cuando así lo indique el contrato.

Cómo utilizar esta herramienta

  1. Elige una muestra útil

    Pega JSON válido con la estructura completa. Prefiere datos anonimizados con formas relevantes a grandes volúmenes de valores repetidos.

  2. Genera y revisa propiedades

    Comprueba tipos inferidos, required y objetos cerrados. Un valor null no equivale a una propiedad ausente.

  3. Completa y prueba el contrato

    Añade formatos o límites justificados y prueba ejemplos válidos e inválidos antes de integrar. La descarga contiene un esquema JSON, no un módulo TypeScript.

Casos de uso

Esbozar un contrato de datos

Parte de una respuesta API o archivo de intercambio y compara la estructura con la documentación de negocio. Añade restricciones que la muestra no demuestra.

Identificar variantes de un array

Incluye campos ausentes, presentes y null para distinguir obligatoriedad y tipos. Las muestras variadas proporcionan una base más representativa.

Preparar validación reutilizable

Usa el esquema con un validador compatible con su draft y palabras clave. Generarlo no instala controles automáticos en la aplicación.

Ejemplos

Inferir un entero y un booleano

id se convierte en integer y active en boolean. Ambos son obligatorios porque aparecen en el objeto; additionalProperties rechaza claves adicionales.

Entrada

{"id":1,"active":true}

Resultado

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "active": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "active"
  ],
  "additionalProperties": false
}

Inferir todos los elementos del array

id aparece en ambos objetos y sigue siendo obligatorio. name solo aparece en el segundo: es una propiedad conocida pero opcional.

Entrada

[{"id":1},{"id":2,"name":"Ada"}]

Resultado

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "integer"
      },
      "name": {
        "type": "string"
      }
    },
    "required": [
      "id"
    ],
    "additionalProperties": false
  }
}

Consejos y buenas prácticas

  • No conviertas un valor observado en constante de negocio sin más pruebas. Una muestra no documenta todos los valores permitidos.
  • Prueba una respuesta con un campo nuevo para decidir si additionalProperties: false encaja con tu política de compatibilidad.
  • Mantén propiedades omitidas y valores null en casos de prueba separados: expresan reglas diferentes.
  • Usa JSON a TypeScript si también necesitas interfaces TypeScript o esquemas Zod, en vez de copiar estructuras manualmente.

Fuentes y referencias

Preguntas frecuentes

¿Solo se analiza el primer elemento del array?

No. Todos los elementos aportados participan. Se combinan propiedades y las ausencias observadas influyen en required. Esto sigue siendo análisis de muestras, no predicción de datos futuros desconocidos.

¿Por qué exige un campo opcional de mi API?

No faltó en ninguna muestra relevante. Quítalo de required según el contrato real o añade un objeto representativo que omita la clave.

¿Por qué rechaza campos adicionales?

Los objetos generados están cerrados con additionalProperties: false. Cambia la regla si admites nuevas propiedades y decide explícitamente antes de validar datos que evolucionan.

¿El resultado garantiza la validez de todos mis datos?

No. Describe formas observadas y necesita revisión de negocio. Añade restricciones pertinentes y ejecuta un validador compatible con el draft y las palabras clave utilizadas.

Herramientas relacionadas

Herramientas similares o complementarias a esta.

Herramientas similares

Valida un documento JSON con un esquema y localiza cada error con precisión.

DesarrolloDestacadaUsar esta herramienta

Formatea, minimiza y valida un documento JSON para hacerlo más legible o compacto.

DesarrolloDestacadaUsar esta herramienta