JSON a TypeScript
Convierte un documento que ya tienes en interfaces de TypeScript, dataclasses de Python, structs de Go o structs de Rust listas para pegar en un proyecto.
Entrada
El coloreado de sintaxis esta desactivado en este documento porque recolorear algo tan grande en cada pulsacion ralentizaria la escritura. Todas las herramientas siguen funcionando con normalidad.
Salida
El coloreado de sintaxis esta desactivado en este documento porque recolorear algo tan grande en cada pulsacion ralentizaria la escritura. Todas las herramientas siguen funcionando con normalidad.
El resultado aparece aqui.
Funciona por completo en tu navegador. Nada de lo que pegas se sube, y puedes comprobarlo en la pestana Red de tu navegador.
Sobre esta herramienta
Los tipos salen de la misma deduccion que usa el generador de esquemas, asi que las dos paginas coinciden sobre tu documento y solo se diferencian en como lo escriben. Un objeto anidado pasa a ser un tipo con nombre en lugar de uno en linea, porque un tipo en linea a tres niveles de profundidad es ilegible y nada mas puede referirse a el. Los nombres vienen de la clave que contiene el valor, en singular dentro de un array, y un nombre ya ocupado recibe un numero para que el resultado siempre compile. Una clave que falta en algun registro se marca como opcional con un signo de interrogacion. Un objeto vacio pasa a ser un registro de unknown en vez de una interfaz vacia, y un array vacio pasa a ser un array de unknown, porque la muestra no dice nada de lo que habria dentro. Todos los numeros son number, porque TypeScript no tiene un tipo entero. Cambiar el lenguaje de salida a Python escribe la misma forma deducida como dataclasses en su lugar: un objeto anidado pasa a ser una clase anidada, nombrada y sin duplicados de la misma manera, y una clave que falta en algun registro pasa a ser Optional con un valor por defecto None, colocada despues de cada campo siempre presente, porque Python exige ese orden. Python mantiene int y float por separado, a diferencia de la salida en TypeScript. Cambiar a Go escribe la misma forma como structs en su lugar, cada campo con una etiqueta json que lleva la clave original, para que el codigo generado vuelva a convertirse exactamente en el documento del que salio. Una clave que falta en algun registro, o que a veces es explicitamente null, pasa a ser un puntero con una etiqueta omitempty solo donde eso importa de verdad, porque Go ya trata un slice o map ausente como nil sin necesitarla. Go tambien mantiene los enteros y los decimales por separado, como int64 y float64. Cambiar a Rust escribe structs con derives de serde: los campos pasan a snake_case con un atributo rename de serde cuando eso cambia el nombre, una clave que falta en algun registro pasa a ser Option con skip_serializing_if para que vuelva a faltar en vez de aparecer como null, y una palabra reservada de Rust que coincide con una clave JSON, como type, se escribe como identificador crudo para que el resultado siga compilando.
Como se usa
- Pega un documento, o varios registros dentro de un array, en el panel de entrada.
- Elige un lenguaje de salida y un nombre raiz, ajusta sus opciones y pulsa Generar tipos.
- Copia las declaraciones o descargalas como archivo.