JSON a tipos TypeScript, PHP y Go
Pega un JSON de ejemplo y obtén las declaraciones de tipos equivalentes: interfaces TypeScript, clases readonly de PHP 8.2 con propiedades promovidas o structs de Go con etiquetas json.
Se ejecuta en tu navegador: no se sube nada.
Cómo se usa
- Pega un JSON de ejemplo representativo. Cuanto más variados sean los elementos de tus arrays, mejor será el resultado.
- Elige TypeScript, PHP o Go y escribe el nombre del tipo raíz.
- Los arrays de objetos se combinan en un solo tipo: un campo que falta en algunos elementos pasa a ser opcional y un null pasa a ser un tipo anulable.
- Copia el código o descárgalo y ajusta nombres y tipos a mano donde el ejemplo no daba suficiente información.
Preguntas frecuentes
¿Se sube mi JSON?
No. Los tipos se generan en tu navegador y no se envía nada.
¿Cómo se detectan los campos opcionales y anulables?
A partir del ejemplo. Si una clave falta en algunos objetos de un array, es opcional (? en TypeScript, = null en PHP, un puntero con omitempty en Go). Si un valor es null en el ejemplo, el tipo incluye null.
¿Por qué aparece any, mixed o unknown?
El ejemplo no daba suficiente información: un array vacío no tiene tipo de elemento, un null solo no tiene otro tipo, y valores de distinto tipo en la misma posición no se pueden expresar como un solo tipo en Go.
¿Qué versión de PHP necesitan las clases?
PHP 8.2 o superior, porque son clases final readonly con promoción de propiedades en el constructor. Los arrays se tipan con PHPDoc, como @param Item[] $items.
¿Se distinguen enteros y decimales?
Sí. 1 es un entero (int, int64) y 1.5 un decimal (float, float64). Si ambos aparecen en la misma clave, el campo pasa a decimal. En TypeScript ambos son number.