Ir al contenido principal
Bethemesh

JSON a TypeScript, Zod y JSON Schema

Infiere interfaces TypeScript, tipos, esquemas Zod o JSON Schema a partir de objetos y arrays de un ejemplo JSON, localmente.

  • Portapapeles
  • Exportar

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?

Convierte un ejemplo JSON en interfaces o alias TypeScript, esquemas Zod o JSON Schema. El generador recorre objetos anidados y todos los elementos de los arrays, no solo el primero. El resultado es una base para revisar según tu API: un ejemplo no revela todos los valores que devolverá un servicio. La inferencia se hace en tu dispositivo y el código generado no se ejecuta en el formulario.

El motor identifica cadenas, números, booleanos, objetos, arrays y null. Los tipos diferentes observados pueden formar una unión. Los números TypeScript usan number; cadenas con aspecto de fecha o correo siguen siendo string, sin reglas de negocio deducidas. Un array vacío no revela sus futuros elementos y produce un tipo desconocido.

En un array de objetos se combinan las propiedades observadas. Un campo ausente en algunas entradas puede ser opcional. El modo de exigir todos los campos genera un contrato más estricto que algunos ejemplos dejarían de cumplir. Un campo presente con null no está ausente: nulabilidad y opcionalidad son hechos distintos.

Elige interface o type para declaraciones TypeScript, Zod para código de validación o JSON Schema para un documento de esquema. readonly afecta a declaraciones TypeScript, sin congelar objetos en ejecución. La salida Zod importa zod, que tu proyecto debe proporcionar, y declara esquemas hijos antes de las referencias de sus padres.

Las salidas comparten inferencia sin prometer comportamientos idénticos. TypeScript comprueba código en desarrollo, no automáticamente respuestas de red. Zod necesita una llamada real de validación. JSON Schema cierra objetos mediante additionalProperties: false; decide explícitamente cómo tratar claves adicionales antes de integrarlo.

Cómo utilizar esta herramienta

  1. Añade una muestra representativa

    Pega o importa JSON válido. Evita datos personales innecesarios: importan estructura y distintos tipos observados.

  2. Elige nombre raíz y destino

    Nombra el modelo y selecciona la salida. Ajusta propiedades ausentes y readonly cuando el destino TypeScript lo permita.

  3. Revisa e integra el código

    Comprueba uniones, campos opcionales y dependencias antes de copiar o exportar. Cambiar entradas u opciones oculta el resultado anterior. Compila o valida después en tu proyecto.

Casos de uso

Esbozar modelos de respuesta API

Aporta ejemplos representativos con anidamientos, variantes y null. Revisa después nombres propuestos y campos realmente garantizados por el proveedor.

Preparar validación Zod

Genera esquemas básicos y añade formatos, límites y reglas de aplicación. Una cadena cualquiera no se considera automáticamente una URL válida.

Contrastar varios ejemplos con un contrato

Agrupa objetos comparables en un array para mostrar campos presentes solo en algunos casos. Incluye situaciones poco frecuentes conocidas.

Ejemplos

Crear dos interfaces para una respuesta anidada

Con nombre raíz Response y destino interface, user se convierte en un modelo User separado. id es number y name string; no se fijan los valores concretos del ejemplo.

Entrada

{"user":{"id":1,"name":"Ada"}}

Resultado

export interface Response {
  user: User;
}

export interface User {
  id: number;
  name: string;
}

Declarar dependencias Zod antes de usarlas

Con nombre raíz Root y salida Zod, ChildSchema precede a RootSchema y evita referenciar una constante antes de inicializarla.

Entrada

{"child":{"id":1}}

Resultado

import { z } from 'zod';

export const ChildSchema = z.object({
  id: z.number(),
});
export type Child = z.infer<typeof ChildSchema>;

export const RootSchema = z.object({
  child: ChildSchema,
});
export type Root = z.infer<typeof RootSchema>;

Consejos y buenas prácticas

  • Incluye campos omitidos y valores null. Una respuesta completamente rellena suele ocultar propiedades opcionales.
  • Un ejemplo no demuestra una enumeración exhaustiva ni un límite numérico. Añade restricciones desde la documentación del servicio.
  • No confundas readonly con protección en ejecución: aquí se trata de una comprobación TypeScript.
  • Mantén identificadores grandes como cadenas cuando la API los represente así. JSON se lee con los tipos numéricos del navegador.

Fuentes y referencias

Preguntas frecuentes

¿Una interfaz generada valida respuestas de mi API?

No. TypeScript describe valores esperados durante el desarrollo. Para comprobar datos recibidos en ejecución, añade un validador y usa realmente su resultado antes de confiar en la respuesta.

¿Cómo se detectan propiedades opcionales?

Se comparan objetos de un mismo array y se identifican claves ausentes en algunas entradas. Un único objeto que siempre contiene un campo no revela que este pueda omitirse.

¿Por qué una fecha o correo queda como string?

El ejemplo proporciona una cadena, no prueba su regla de negocio. Se evita convertir su apariencia en validación arbitraria. Añade explícitamente los formatos y restricciones necesarios.

¿Qué diferencia hay con el generador JSON Schema independiente?

Aquí hay varios destinos y opciones de nombres o campos opcionales. El generador independiente produce directamente un esquema y distingue enteros observados. Ambos comparten el mismo motor de inferencia.

Herramientas relacionadas

Herramientas similares o complementarias a esta.

Herramientas similares

Genera un JSON Schema desde un ejemplo JSON localmente en tu navegador.

DesarrolloUsar esta herramienta

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

DesarrolloDestacadaUsar esta herramienta