Développeur / JSON
JSON vers une struct Go
Collez un exemple JSON et obtenez des définitions de structs Go avec des noms de champs exportés, les initialismes attendus par les linters Go et des tags json, prêtes à intégrer dans votre code.
JSON vers une struct Go: Le convertisseur lit le JSON dans votre navigateur et génère une struct pour chaque objet. Les clés deviennent des noms exportés en CamelCase, avec des initialismes tels que ID, URL et HTTP en majuscules, conformément aux recommandations de golint. Chaque champ conserve sa clé d’origine dans un tag json, avec une mise en forme conforme à gofmt. Les objets d’un tableau sont fusionnés : une clé absente de certains objets reçoit donc omitempty, tandis qu’une clé parfois null devient un pointeur. Les nombres entiers deviennent des int64, sauf si un nombre décimal apparaît au même emplacement : le type devient alors float64. Fonctionne 100 % localement dans votre navigateur, sans aucun téléversement de fichier vers le serveur.
- Catégorie
- Outils développeur
- Exécutions
- Dans votre navigateur
- Coût
- Gratuit · sans inscription
- Disponibilité
- Prêt à l'emploi
Fonctionne entièrement dans votre navigateur
Go
type User struct {
ID int64 `json:"id"`
UserName string `json:"user_name"`
AvatarURL string `json:"avatar_url"`
Score float64 `json:"score"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
ZipCode string `json:"zip_code"`
}Les clés absentes de certains objets d’un tableau reçoivent omitempty ; les clés parfois null deviennent des pointeurs. Vérifiez les types dans la documentation de votre API : un échantillon montre uniquement ce qu’il contient.
D’un exemple à un type
Go décode le JSON en structs avec encoding/json : chaque clé est associée à un champ portant le tag json correspondant, ou au nom du champ sans tenir compte de la casse lorsqu’il n’y a pas de tag. Seuls les champs exportés, c’est-à-dire ceux qui commencent par une majuscule, sont renseignés. C’est pourquoi chaque champ est ici écrit avec une majuscule et conserve la clé d’origine dans son tag.
Un exemple ne montre que ce qu’il contient. Une liste d’utilisateurs dont l’un n’a pas d’adresse e-mail indique au convertisseur que email est facultatif ; un objet unique ne le permet pas. Collez plusieurs objets représentatifs dans un tableau lorsque vous en avez, puis vérifiez le résultat avec la documentation de l’API. Le formateur JSON aide d’abord à repérer la structure d’une réponse volumineuse.
Autres langages et schémas
Le même exemple peut être converti en interfaces TypeScript avec le convertisseur JSON vers TypeScript, pour un front-end qui lit la même API, ou en JSON Schema afin de valider les données à la frontière.
Comment l'utiliser
- Collez un objet ou un tableau JSON, par exemple une réponse d’API.
- Nommez le type racine et choisissez des structs séparées ou imbriquées.
- Copiez le code Go.
Confidentialité et limitations
Votre JSON est converti dans votre navigateur et n’est jamais envoyé.
Outils associés
Questions fréquentes
Pourquoi user_id devient-il UserID et non UserId ?
En Go, les initialismes s’écrivent avec une casse uniforme : UserID, APIKey et AvatarURL. Le convertisseur utilise la liste d’initialismes de golint, le linter qui a popularisé cette règle.
Quand un champ reçoit-il omitempty ou devient-il un pointeur ?
Lorsque l’exemple est un tableau d’objets et qu’une clé est absente de certains d’entre eux, le champ reçoit omitempty : lors de la sérialisation, il est alors omis lorsqu’il est vide. Lorsqu’une clé vaut null dans certains objets, le champ devient un pointeur afin que nil puisse représenter null. Vous pouvez également ajouter omitempty à tous les champs.
Pourquoi int64 et float64 ?
JSON ne possède qu’un seul type numérique. Une valeur écrite sans séparateur décimal devient int64, tandis qu’une valeur fractionnaire devient float64. Si un ID peut dépasser 2^53 ou s’il s’agit en réalité d’une chaîne de caractères déguisée, modifiez le type manuellement : un exemple ne montre que les valeurs qu’il contient.
Que deviennent les valeurs null ou les tableaux vides ?
Lorsqu’il ne dispose d’aucune information, le convertisseur attribue le type any (interface{}) à un champ toujours null ou à un tableau vide. Ce type accepte n’importe quelle valeur. Remplacez-le par le type réel lorsque vous le connaissez.
Outil gratuit · dans votre navigateur exécutions · aucun compte requis