JSON a TypeScript, y también Zod, Go, Python, Java, C# y Rust
Pega una muestra JSON y obtén interfaces de TypeScript, un esquema Zod, JSON Schema o tipos para Go, Python, Java, C#, Kotlin, Swift y Rust.
Los tipos se deducen solo de la muestra. Un campo que es null en tu muestra se convierte en null o any; pega una muestra más completa (o un array con varios registros) para obtener tipos más precisos.
Funciona por completo en tu navegador. Tu JSON nunca se sube, así que es seguro usar respuestas reales de API. Ver todas las herramientas gratis.
¿Encontraste un problema o algo que podría mejorar? Leemos todos los mensajes y lo arreglamos rápido.
Este conversor gratis de JSON a TypeScript lee una muestra JSON, como una respuesta de API o un archivo de configuración, y escribe las interfaces de TypeScript correspondientes, con un tipo con nombre para cada objeto anidado. La misma entrada produce también un esquema Zod, un JSON Schema, structs de Go, dataclasses de Python o modelos de Pydantic, y clases para Java, C#, Kotlin, Swift y Rust, para que dejes de escribir nombres de campo a mano.
La inferencia de tipos usa quicktype, el motor de código abierto que hay detrás de quicktype.io y de la extensión de editor "Paste JSON as Code", ejecutándose en tu navegador. Fusiona todos los objetos de un array, así que un campo que solo aparece en algunos registros pasa a ser opcional. Solo puede inferir a partir de lo que ve: un campo que es null en tu muestra se tipa como null, y un array vacío como un array de cualquier cosa. Para obtener los tipos más precisos, pega una muestra con valores reales o varios registros.
Cómo usarla
- Pega un objeto JSON o un array de objetos. Para empezar se carga un registro de usuario de ejemplo.
- Elige la salida: interfaces de TypeScript, alias de tipo, Zod, JSON Schema, Go, Python, Java, C#, Kotlin, Swift o Rust.
- Fija el nombre del tipo raíz (por ejemplo, User u OrderResponse). Los tipos anidados toman el nombre de sus claves.
- Marca "Hacer opcionales todas las propiedades" para payloads parciales como los cuerpos PATCH. Desmarca "Solo tipos" para obtener funciones auxiliares de serialización donde el lenguaje lo admita.
- Copia el código o descárgalo como archivo con la extensión adecuada.
Preguntas frecuentes
¿Cómo convierto JSON en una interfaz de TypeScript?
Pega el JSON en el cuadro con TypeScript (interfaces) seleccionado. Cada objeto se convierte en una interfaz exportada: las cadenas pasan a string, los números a number, los booleanos a boolean, los arrays a T[], y los objetos anidados reciben su propia interfaz con el nombre de la clave, como address → Address. Copia el resultado en un archivo .ts e impórtalo donde analices la respuesta.
¿Uso una interfaz o un alias de tipo?
Para formas de objeto son casi intercambiables. Las interfaces se pueden extender y fusionar volviendo a declararlas, y muchas guías de estilo las prefieren para los tipos de objeto públicos. Los alias de tipo también pueden expresar uniones y tipos mapeados. La opción TypeScript (alias de tipo) genera `export type User = { ... }` si tu código prefiere ese estilo.
¿Cómo se detectan los campos opcionales?
A partir de la muestra. Si tu JSON es un array de objetos y una clave falta en algunos de ellos, esa propiedad se marca como opcional (name?: string). Una clave presente pero null en todos los registros pasa a ser null, y una que es cadena en algunos registros y null en otros pasa a ser null | string. Para que todas las propiedades sean opcionales, usa la opción correspondiente.
¿Por qué usar un esquema Zod en lugar de una interfaz de TypeScript?
Una interfaz solo existe en tiempo de compilación; no puede comprobar que una API haya devuelto realmente lo que esperas. Un esquema Zod valida los datos en tiempo de ejecución (UserSchema.parse(data) lanza un error si falta un campo o tiene un tipo incorrecto) y te da el tipo de TypeScript mediante z.infer, así que una sola definición cubre ambas cosas. El código Zod generado exporta tanto el esquema como el tipo inferido.
¿Detecta fechas y UUID?
Solo si activas "Detectar fechas, UUID y números en cadenas". Está desactivado por defecto porque JSON no tiene tipo fecha: JSON.parse devuelve "2026-03-14T09:26:53Z" como cadena, así que tiparlo como Date sería incorrecto salvo que también uses el conversor generado. Con la detección activada, Go obtiene time.Time; C#, DateTimeOffset y Guid, y Python, datetime y UUID.
¿Se sube mi JSON?
No. La biblioteca quicktype se descarga una vez (aproximadamente 1 MB) y se ejecuta en la pestaña de tu navegador. Tu JSON nunca se envía a ningún sitio, así que puedes pegar sin riesgo respuestas reales de API con datos personales.
Cómo se traducen los valores JSON a cada lenguaje
• Cadenas: string en TypeScript, Go, Swift y Kotlin (String), str en Python, String en Java y Rust, string en C#.
• Números enteros: number en TypeScript, int64 en Go, int en Python, long en Java, Long en Kotlin, long en C#, Int en Swift, i64 en Rust. Los números con punto decimal pasan a float64, float o double.
• Booleanos: boolean, bool, Boolean, Bool, según lo escribe cada lenguaje.
• Arrays: T[] en TypeScript, []T en Go, List[T] o list[T] en Python, List<T> en Java, Kotlin y C#, [T] en Swift, Vec<T> en Rust.
• Objetos anidados: un tipo o clase con nombre propio. Los objetos con muchas claves dinámicas (como un mapa de ID) se detectan y se tipan como un mapa o Record en lugar de cientos de campos.
• null: null en TypeScript, interface{} en Go, None en Python, object en C#. Dale al campo un valor real en tu muestra para obtener un tipo útil.
Cómo obtener tipos precisos a partir de una muestra
La inferencia solo es tan buena como la muestra. Tres hábitos marcan una gran diferencia. Primero, pega varios registros como un array en lugar de un único objeto, para que aparezcan los campos opcionales y los tipos mixtos. Segundo, sustituye los null por valores realistas cuando conozcas el tipo, ya que un campo que era null en todos los registros no aporta información. Tercero, cambia el nombre del tipo raíz por lo que realmente es el payload (InvoiceResponse, no Root); los tipos anidados toman el nombre de sus claves y se leen mucho mejor en el código cuando la raíz tiene un nombre con sentido.
Si la API es tuya, la mejor solución a largo plazo es generar los tipos a partir de su esquema (OpenAPI o JSON Schema) en lugar de a partir de muestras. La salida JSON Schema de aquí es un punto de partida razonable para escribir ese esquema.
Herramientas gratis relacionadas
- Formateador JSON — Formatea, minifica y valida JSON, con los errores de análisis localizados por línea y columna. En tu navegador, sin subir nada.
- curl a código — Pega un comando curl, incluido el "Copy as cURL" de Chrome, y obtén la misma petición en Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget o HTTPie.
- Validador de YAML — Valida YAML con la línea y la columna exactas de cada error, y detecta los fallos que los analizadores aceptan sin avisar: booleanos yes/no, tabulaciones, claves duplicadas.
- Decodificador de JWT — Decodifica la cabecera y el payload de un JWT, lee la caducidad en lenguaje claro, verifica firmas HS, RS, PS y ES o firma un token nuevo. Nada sale de tu navegador.
- Formateador de SQL — Convierte SQL desordenado en consultas legibles y con sangría coherente para PostgreSQL, MySQL, T-SQL, BigQuery y más. Funciona en tu navegador.