El generador de tipos JSON convierte automáticamente una muestra JSON en definiciones de tipos para TypeScript, Rust, Kotlin, Python o JSON Schema. Pega el JSON a la izquierda, selecciona un modo de salida y el código generado aparece a la derecha en tiempo real. Elimina el trabajo tedioso de declarar tipos manualmente para respuestas de API y modelos de datos.
Ejemplos de modos de salida
Con esta entrada JSON:
{
"user": {
"id": 123,
"name": "Alice",
"roles": ["admin", "viewer"]
}
}
TypeScript (interface) produce:
export type Root = {
user: User;
};
export type User = {
id: number;
name: string;
roles: string[];
};
Rust produce structs con anotaciones #[derive(Serialize, Deserialize)] que dependen de serde. Python produce clases Pydantic v2 BaseModel. Kotlin (Jackson) produce data classes con anotaciones @JsonProperty.
Los 8 modos de salida
- TypeScript (interface): declaraciones
interfaceseparadas por objeto — bueno para proyectos grandes - TypeScript (alias de tipo único):
typecon tipos anidados inlinados — rápido de usar - Rust: structs con anotaciones serde
- Kotlin (Jackson): data classes con
@JsonProperty - Kotlin (kotlinx.serialization): data classes con
@Serializable - Python (Pydantic):
BaseModelde Pydantic v2 - JSON Schema: formato de schema estándar para documentación de API
- Shape: representación intermedia del análisis de tipos interno — útil para depurar la inferencia
Cómo funciona la inferencia de tipos y dónde falla
La herramienta infiere tipos estáticamente a partir de la muestra que proporcionas:
- Los números no se distinguen entre entero y flotante (TypeScript obtiene
number, Rust obtienei64/f64según el valor) - Un valor
nullhace el campo opcional - Los arrays con tipos mixtos producen un tipo unión
- Un array vacío produce
unknown[]
Estas inferencias son tan buenas como la muestra. Si tu API a veces devuelve null para un campo pero tu muestra siempre tiene un valor, el tipo generado perderá la opcionalidad. Revisa siempre la salida frente al rango completo de datos reales que devuelve tu API.
Opciones avanzadas
Formato del nombre de propiedad: convierte las claves snake_case del JSON a la convención del lenguaje destino — camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE o kebab-case.
Nombre del tipo: establece el nombre del tipo raíz. El valor por defecto es Root — cámbialo a algo significativo como UserResponse antes de pegarlo en tu código.
Expandir ruta: usa sintaxis JSON Pointer (p. ej. /items/-/data) para promover una ruta profundamente anidada al nivel superior. El - es un comodín de array, útil para respuestas de API paginadas donde los datos están dentro de items[].data.
Recopilar propiedades adicionales: añade una firma de índice ([key: string]: unknown en TypeScript) para permitir campos más allá de los que contiene la muestra.