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.

Exécutions
Dans votre navigateur
Coût
Gratuit · sans inscription
Disponibilité
Prêt à l'emploi
JSON vers structure GoTraitement local

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

  1. Collez un objet ou un tableau JSON, par exemple une réponse d’API.
  2. Nommez le type racine et choisissez des structs séparées ou imbriquées.
  3. 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