Comment JSON se mappe aux structs Go
Go utilise des champs de struct exportés avec des tags json entre backticks pour la sérialisation JSON. Le générateur crée une struct pour chaque objet JSON, avec un champ exporté par clé. Les noms de champs suivent les conventions Go : ils sont exportés (PascalCase), et la clé JSON originale est préservée dans le tag json:"key". Ainsi "firstName" en JSON devient FirstName string `json:"firstName"` en Go.
Le mappage de types suit les règles standard encoding/json : les chaînes JSON deviennent string, les entiers int64, les décimaux float64, les booléens bool, et les tableaux des slices ([]T). Les objets imbriqués génèrent des types struct nommés supplémentaires. Un champ pouvant être null est typé comme pointeur (*T) pour que la valeur zéro nil représente proprement JSON null.
L'option de tag omitempty peut être activée pour chaque champ — `json:"key,omitempty"` omet le champ de la sortie marshalée quand il contient sa valeur zéro. C'est le pattern Go standard pour les champs API optionnels.
Conventions de nommage et idiomes Go
Go a des conventions de style strictes imposées par gofmt et golint. Le générateur les applique automatiquement : les acronymes comme "id", "url", "http" et "api" sont mis en majuscules en ID, URL, HTTP et API respectivement, suivant le guide de style officiel Go. Par exemple "userId" devient UserID et "apiUrl" devient APIURL.
Les noms de struct sont dérivés des clés d'objet JSON en PascalCase. La struct racine est nommée "Root" par défaut (personnalisable). Quand la même structure JSON apparaît plusieurs fois sous différentes clés, le générateur détecte la forme dupliquée et réutilise le même type de struct.
La sortie inclut une déclaration de package (par défaut "main" pour les prototypes rapides, modifiable) et l'import nécessaire pour "encoding/json" si des fonctions helper Marshal/Unmarshal sont générées avec les structs.
Flux de travail de développement Go
Les développeurs Go travaillant avec des API REST passent beaucoup de temps à écrire manuellement des définitions de struct qui reflètent les réponses JSON. Collez la réponse API, générez les structs et utilisez immédiatement json.Unmarshal pour analyser la réponse en valeurs Go typées.
Lors de la construction d'outils CLI avec cobra ou de gestionnaires HTTP avec net/http, des structs de requête et de réponse bien typées sont essentielles. Le générateur produit des structs prêtes à utiliser avec json.NewDecoder(r.Body).Decode(&req) et json.NewEncoder(w).Encode(resp).
Les projets de modules Go qui appellent des API tierces gardent souvent les fichiers de struct générés dans un package internal/models. La sortie du générateur s'intègre parfaitement dans ce pattern avec un nom de package configurable.