JSON vers struct Go
Transformez du JSON en structs Go avec noms de champs exportés, tags json, types pointeurs pour les null et omitempty facultatif. Gère objets imbriqués et tableaux.
Les objets imbriqués deviennent des structs séparées ; les valeurs nullables utilisent des pointeurs ; les entiers deviennent int64, les décimaux float64, les valeurs mixtes ou toujours null any.
S'exécute entièrement dans votre navigateur. Vos données ne sont jamais envoyées.
Outils Connexes
Voir ToutQu'est-ce que JSON vers struct Go ?
Génère des définitions Go struct idiomatiques à partir d'un exemple JSON. Les noms de champs sont exportés en PascalCase avec les initialismes Go (ID, URL, API…), chaque champ porte un tag json:"…" avec la clé d'origine, et les objets imbriqués deviennent des structs nommées distinctes.
Comment utiliser JSON vers struct Go
- Collez un exemple JSON dans Entrée JSON (ou cliquez sur Charger un exemple / Ouvrir un fichier).
- Définissez le Nom du type racine (
Rootpar défaut). - Conservez ou décochez Ajouter omitempty aux champs facultatifs et nullables.
- Copiez le code Go généré ou utilisez Télécharger pour l'enregistrer dans un fichier.
Exemple
{"id":1,"name":"A","tags":["x"]} type Root struct {
ID int64 `json:"id"`
Name string `json:"name"`
Tags []string `json:"tags"`
} Quand utiliser JSON vers struct Go
Utilisez-le pour désérialiser des réponses d'API avec encoding/json. Il ne génère pas de types personnalisés pour les valeurs de temps ou les enums ; remplacez vous-même string par time.Time là où c'est pertinent.
Comment fonctionne JSON vers struct Go
L'exemple est parcouru récursivement et chaque position collecte les types rencontrés. Les tableaux d'objets sont fusionnés en un seul type : une clé absente de certains éléments devient facultative, une clé nulle quelque part devient nullable, des entiers mêlés à des décimaux deviennent un type à virgule flottante, et tout autre mélange de types se rabat sur un type dynamique. Les objets imbriqués deviennent leurs propres types nommés (PascalCase de la clé, clés de tableau mises au singulier : orders → Order), avec des suffixes numériques en cas de collision de noms. La sortie Go utilise int64 pour les entiers, float64 pour les décimaux, string, bool, des slices pour les tableaux, un pointeur (*T) pour les valeurs nullables et any pour les valeurs dynamiques ou uniquement nulles. Les colonnes sont alignées comme avec la sortie de gofmt.
Cas d'utilisation courants
- Modéliser une réponse REST pour json.Unmarshal
- Créer des structs de configuration à partir d'un fichier JSON
- Accélérer l'écriture de DTO pour un microservice Go
- Comparer le nommage des champs entre JSON et code Go
Questions Fréquentes
Pourquoi int64 plutôt que int ?
int64 a une taille garantie sur toutes les plateformes, ce qui évite les mauvaises surprises de dépassement avec de grands identifiants. Remplacez-le par int si vous préférez.
Quand un pointeur est-il utilisé ?
Quand l'exemple contient null pour une clé, le champ devient *T afin de distinguer une valeur absente de la valeur zéro.
Que fait omitempty ?
encoding/json ignore le champ lors de la sérialisation s'il a sa valeur zéro. L'option ne l'ajoute qu'aux champs facultatifs ou nullables dans l'exemple.