nicetool.dev logo

JSON a TypeScript

Pega una respuesta de API o un objeto JSON. Los tipos se actualizan al escribir.

JSON
Código generado
export interface User {
  id: number;
  name: string;
  email: string;
  score: number;
  active: boolean;
  tags: string[];
  address: Address;
  orders: Order[];
}

export interface Address {
  city: string;
  postcode: null;
}

export interface Order {
  id: number;
  total: number;
  paidAt?: string;
  coupon?: string;
}

¿Por qué generar tipos desde JSON?

Las API, los archivos de configuración y los webhooks entregan JSON, pero TypeScript, Go y los validadores en tiempo de ejecución necesitan una estructura explícita. Escribir a mano interfaces para una respuesta grande es lento y propenso a errores: un campo que a veces falta, un número que a veces es null o un array anidado de objetos se describen mal con facilidad. Esta herramienta lee un ejemplo real e infiere la estructura por ti. Los arrays de objetos se fusionan, de modo que las claves presentes solo en algunos elementos pasan a ser opcionales, las que a veces son null pasan a admitir null y cada objeto anidado recibe su propio nombre de tipo.

Funciones

  • • Interfaces o alias de tipo TypeScript con campos opcionales (?)
  • • Structs de Go con etiquetas json, omitempty y nombres idiomáticos (ID, URL)
  • • Esquemas Zod con tipos TypeScript inferidos, ordenados para resolver referencias
  • • Fusiona arrays de objetos y detecta null, valores mixtos y enteros
  • • Entrecomilla las claves que no son identificadores válidos, como "first-name"

Tus datos son privados

El análisis y la generación de código se hacen en tu navegador. Las respuestas de API con datos reales de clientes no salen de tu equipo.

Sin subidas, funciona sin conexión.

Cómo usar: JSON a TypeScript

  1. 1

    Pega un ejemplo de JSON, por ejemplo una respuesta copiada de la pestaña Red del navegador, Postman o curl. Cuantos más elementos tengan los arrays, mejor se detectan los campos opcionales.

  2. 2

    Elige la salida: interfaces TypeScript, structs de Go o esquemas Zod. En TypeScript puedes cambiar a alias de tipo.

  3. 3

    Pon el nombre del tipo raíz, como User u OrderResponse. Los objetos anidados toman el nombre de su clave y los elementos de un array usan el singular (orders pasa a Order).

  4. 4

    Revisa el resultado, ajusta lo que el ejemplo no podía revelar (por ejemplo un string que en realidad es una fecha o un enum) y cópialo en tu código.

Ejemplos prácticos

Tipar una respuesta REST

Pega el JSON de GET /api/users/42 y obtén una interfaz User con un tipo Address anidado, lista para usar con fetch o axios.

Cliente Go para una API externa

Genera structs con etiquetas json para el payload de un webhook de Stripe o GitHub. Las claves opcionales llevan omitempty y los objetos anidados pasan a tipos aparte.

Validación en tiempo de ejecución con Zod

Convierte un cuerpo de petición de ejemplo en un esquema Zod y usa schema.parse() en un route handler de Next.js para rechazar entradas mal formadas, con z.infer para el tipo estático.

Archivos de configuración

Pega una configuración JSON para obtener una interfaz tipada, así el editor autocompleta las claves y detecta erratas.

Preguntas frecuentes

¿Cómo se detectan los campos opcionales?+

Cuando la raíz o un valor anidado es un array de objetos, se fusionan todos los elementos. Una clave que falta en al menos uno se marca como opcional (? en TypeScript, omitempty en Go, .optional() en Zod).

¿Qué pasa con los valores null?+

Una clave que es null en algunos elementos y string en otros pasa a string | null (nullable() en Zod, *string en Go). Una clave que es null en todo el ejemplo se queda como null, porque no se puede saber su tipo real.

¿Por qué un número es int64 en Go?+

Los enteros del ejemplo pasan a int64 y los decimales a float64. Si un campo mezcla ambos, se amplía a float64 (number en TypeScript).

¿Detecta fechas, enums o UUID?+

No. JSON no tiene tipo fecha ni enum, así que aparecen como string. Afínalos a mano, por ejemplo con z.string().datetime() o una unión de valores literales.