Ce que fait l’outil
Le convertisseur JSON vers Go lit un exemple JSON et écrit des définitions de structs Go avec des tags json, prêtes pour encoding/json. Collez une réponse de l’API que vous appelez et obtenez des types utilisables tout de suite avec json.Unmarshal, sans écrire chaque champ et chaque tag à la main.
Le convertisseur examine chaque valeur de l’exemple. Les objets imbriqués deviennent leurs propres structs, tous les éléments d’un tableau sont fusionnés en un type d’élément, et les champs absents de certains éléments ou parfois null sont détectés comme optionnels. La sortie est alignée comme le ferait gofmt.
Mode d’emploi
- Collez du JSON dans la zone de saisie, importez un fichier
.jsonou cliquez sur Exemple. - Indiquez le nom du type racine et choisissez comment écrire les objets imbriqués, quels champs reçoivent
omitemptyet si les champs nullables utilisent des pointeurs. - Copiez le code Go ou téléchargez-le en fichier
.go, puis ajoutez votre lignepackage.
Un JSON invalide est signalé avec la ligne et la colonne du problème.
Exemple
Ce JSON :
{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }
devient ces structs :
type Root struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Tags []string `json:"tags"`
Profile Profile `json:"profile"`
}
type Profile struct {
AvatarURL string `json:"avatar_url"`
}
Astuces
- Un seul exemple ne montre que ce qu’il contient. Si une valeur peut être un nombre ou une chaîne, incluez les deux, ou placez plusieurs exemples dans un tableau pour qu’ils soient fusionnés.
- Les horodatages arrivent sous forme de chaînes. Changez vous-même le type en
time.Timequand le format est RFC 3339. - Les objets ayant exactement les mêmes champs partagent un struct, ce qui garde la sortie courte quand la même forme revient à plusieurs endroits.
- Vous écrivez aussi du TypeScript ? Le générateur JSON vers TypeScript utilise la même inférence pour produire des interfaces.
FAQ
› Comment les noms de champs sont-ils choisis ?
Chaque clé JSON devient un nom Go exporté en PascalCase, avec les sigles courants en majuscules comme l'attend golint, donc user_id devient UserID et avatar_url devient AvatarURL. La clé d'origine est conservée dans le tag json, si bien qu'encoding/json associe les champs exactement.
› Quels types Go sont utilisés ?
Les chaînes deviennent string, les entiers int (ou int64 si une valeur dépasse 32 bits), les décimaux float64 et les booléens bool. Les tableaux deviennent des slices, les objets vides map[string]any, et les valeurs uniquement null ou mélangeant plusieurs types deviennent any.
› Quelle différence entre structs nommés et en ligne ?
Le mode nommé écrit chaque objet imbriqué comme un type à part, comme Address ou Order, plus facile à réutiliser et à tester. Le mode en ligne place des types struct anonymes directement dans le parent et garde tout dans une seule déclaration, comme le font beaucoup de convertisseurs rapides.
› Quand omitempty est-il ajouté ?
Par défaut uniquement aux champs optionnels, c'est-à-dire ceux qui manquent dans certains objets d'un tableau ou sont parfois null. Vous pouvez aussi l'ajouter à tous les champs ou à aucun. Activez les pointeurs pour distinguer une valeur absente ou null d'une valeur zéro.
› Mon JSON est-il envoyé ?
Non. Les structs sont générés dans votre navigateur et rien n'est envoyé à un serveur.