Cómo se mapea JSON a structs Go
Go usa campos de struct exportados con tags json entre comillas inversas para la serialización JSON. El generador crea una struct para cada objeto JSON, con un campo exportado por clave. Los nombres de campo siguen las convenciones Go: son exportados (PascalCase) y la clave JSON original se preserva en el tag json:"key". Así "firstName" en JSON se convierte en FirstName string `json:"firstName"` en Go.
El mapeo de tipos sigue las reglas estándar encoding/json: las cadenas JSON se convierten en string, los enteros en int64, los decimales en float64, los booleanos en bool y los arrays en slices ([]T). Los objetos anidados generan tipos struct con nombre adicionales. Un campo que puede ser null se tipa como puntero (*T) para que el valor cero nil represente limpiamente JSON null.
La opción de tag omitempty puede activarse para cada campo — `json:"key,omitempty"` omite el campo de la salida marshaleada cuando contiene su valor cero. Este es el patrón Go estándar para campos de API opcionales.
Convenciones de nomenclatura e idiomas Go
Go tiene convenciones de estilo estrictas impuestas por gofmt y golint. El generador las aplica automáticamente: los acrónimos como "id", "url", "http" y "api" se ponen en mayúsculas a ID, URL, HTTP y API respectivamente, siguiendo la guía de estilo oficial de Go. Por ejemplo "userId" se convierte en UserID y "apiUrl" en APIURL.
Los nombres de struct se derivan de las claves de objeto JSON en PascalCase. La struct raíz se llama "Root" por defecto (personalizable). Cuando la misma estructura JSON aparece varias veces bajo diferentes claves, el generador detecta la forma duplicada y reutiliza el mismo tipo de struct.
La salida incluye una declaración de package (por defecto "main" para prototipos rápidos, cambiable) y el import necesario para "encoding/json" si se generan funciones helper Marshal/Unmarshal junto con las structs.
Flujos de trabajo de desarrollo Go
Los desarrolladores Go que trabajan con APIs REST pasan mucho tiempo escribiendo a mano definiciones de struct que reflejan las respuestas JSON. Pega la respuesta de la API, genera las structs y usa inmediatamente json.Unmarshal para parsear la respuesta en valores Go tipados.
Al construir herramientas CLI con cobra o manejadores HTTP con net/http, las structs de solicitud y respuesta bien tipadas son esenciales. El generador produce structs listas para usar con json.NewDecoder(r.Body).Decode(&req) y json.NewEncoder(w).Encode(resp).
Los proyectos de módulos Go que llaman a APIs de terceros a menudo mantienen los archivos de struct generados en un paquete internal/models. La salida del generador encaja perfectamente en este patrón con un nombre de paquete configurable.