JSON to Go
Générez des structs Go avec tags json depuis un échantillon JSON, prêts pour encoding/json.
Entrée JSON
Code généré
Saisissez du JSON à gauche pour générer un type à partir de celui-ci.
Qu'est-ce que JSON to Go ?
Un convertisseur JSON vers Go lit un document JSON d'échantillon et génère les définitions de structs Go nécessaires pour le décoder avec encoding/json. La bibliothèque standard de Go démarshalise vers des types concrets plutôt que vers une map générique, donc consommer une nouvelle réponse d'API suppose d'abord d'écrire un struct dont les champs correspondent à la charge utile — y compris un tag `json:"..."` sur chaque champ, car Go exige des noms de champs exportés (capitalisés) tandis que les clés JSON sont habituellement en minuscules ou snake_case. Écrire ces structs à la main est lent et facile à mal faire de façon subtile : un seul tag mal orthographié et le champ reste silencieusement à sa valeur zéro sans aucune erreur, ce qui compte parmi les bugs les plus courants lors de l'intégration d'un nouvel endpoint. Ce générateur produit tout l'ensemble d'un coup, donnant à chaque objet imbriqué son propre struct nommé pour que le résultat soit prêt à coller dans un package.
Comment utiliser JSON to Go
- Collez une réponse JSON représentative dans le panneau de gauche — incluez chaque champ optionnel qui vous importe, car un champ absent de l'échantillon n'apparaîtra pas dans le struct généré.
- Définissez un nom de type racine dans la zone au-dessus de la sortie (par défaut « Root ») ; les objets imbriqués sont nommés d'après la clé qui les contient.
- Copiez les structs générés dans votre package et décodez avec json.Unmarshal ou un json.Decoder.
- Besoin d'une autre langue ? Le sélecteur au-dessus de la sortie bascule la même entrée vers Rust, TypeScript, Python et cinq autres.
Exemples
Objet plat avec tags JSON
Entrée
{"id": 1, "name": "Ada", "active": true}
Sortie
type Root struct { Id int64 `json:"id"` Name string `json:"name"` Active bool `json:"active"` }
Un objet imbriqué devient son propre struct
Entrée
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Sortie
type User struct { Id int64 `json:"id"` Name string `json:"name"` Roles []string `json:"roles"` } type Root struct { User User `json:"user"` }
Erreurs courantes
- Éditer le nom de champ Go sans mettre à jour le tag `json:"..."` — encoding/json ne trouve alors aucune clé correspondante, et le champ reste silencieusement à sa valeur zéro au lieu de lever une erreur.
- Utiliser un type valeur pour un champ qui peut être null ou manquant, ce qui rend un champ absent indistinguable d'un champ légitimement à 0, false ou la chaîne vide.
- Générer depuis un échantillon qui omet les champs optionnels — le struct résultant ne les aura simplement pas, donc ces valeurs sont perdues au décodage sans aucun avertissement.
Pourquoi utiliser cet outil
- Émet automatiquement les tags de struct `json:"..."`, qui est là où les structs Go écrits à la main se trompent le plus souvent.
- Donne à chaque objet imbriqué son propre struct nommé et réutilisable au lieu de l'enterrer dans une définition inline anonyme.
- Fonctionne entièrement côté client, donc de vraies réponses d'API utilisées comme échantillons ne quittent jamais votre navigateur.