JSON vers Go Struct
Collez un exemple JSON et obtenez des définitions de struct Go qui l’analysent proprement avec encoding/json. Les champs sont exportés (CamelCase), étiquetés avec les clés JSON d’origine, promus en pointeurs lorsque la valeur peut être nulle, et les objets imbriqués obtiennent leurs propres déclarations de struct nommées.
Comment convertir JSON en struct Go
-
1
Collez le JSON
Un seul exemple suffit. Plusieurs exemples améliorent l'inférence nullable.
-
2
Choisissez un nom
PascalCase pour les champs exportés est la convention Go. Choisissez un style d'abréviation (`URL` vs `Url`, `ID` vs `Id`).
-
3
Choisissez une stratégie optionnelle
Utilisez des pointeurs pour les champs nullable (le plus idiomatique), ou des balises `omitempty`.
-
4
Copiez les structs
Une struct racine plus des imbriquées. Collez dans un fichier `.go` et appuyez sur `go build`.
Exemple de sortie
Pour :
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Sortie :
type User struct {
FirstName string `json:"first_name"`
Age int `json:"age"`
Email *string `json:"email"`
Tags []string `json:"tags"`
}
Mappage des types
| Valeur JSON | Type Go |
|---|---|
| chaîne | string |
| entier | int ou int64 |
| nombre (décimal) | float64 |
| booléen | bool |
| null (avec une valeur voisine non nulle) | *T (pointeur) |
| tableau | []T |
| objet | Struct nommé |
| tableau mixte | []interface{} |
Idiomes de nommage suivis par le générateur
- Initialismes en majuscules :
id->ID,url->URL,api_key->APIKey. Cela correspond au style recommandé par Go (et aux règles dego vet/staticcheck). - JSON snake_case -> champs PascalCase :
first_name->FirstName. - Acronymes d’un seul mot préservés :
IPresteIP,HTTPresteHTTP. - Balise JSON :
json:"first_name"conserve la clé d’origine pour que l’encodage soit propre.
Champs optionnels : pointeur ou omitempty ?
| Stratégie | Utiliser quand |
|---|---|
Pointeur (*T) |
Vous devez distinguer “absent” de “valeur zéro” |
omitempty |
Vous voulez seulement ignorer les valeurs zéro lors de la sérialisation ; la désérialisation stocke zéro pour les manquants |
| Aucun | Le champ est toujours présent et les valeurs zéro sont significatives |
Le générateur utilise par défaut pointeur + omitempty pour tout ce qui est considéré comme nul ; ajustez en fonction de votre sémantique.
Erreurs courantes
- Utiliser
intlorsque l’entier JSON dépasseMaxInt32sur une cible 32 bits. Utilisezint64pour les valeurs connues comme grandes. - Sérialiser et perdre l’ordre des clés.
encoding/jsonémet les clés dans l’ordre de déclaration des champs, pas dans l’ordre JSON d’origine. Triez manuellement si vous avez besoin d’une sortie canonique. - Tableaux de formes mixtes.
[]interface{}perd la sécurité de type. Envisagez plutôt des types union avec un champ discriminanttype. - Oublier
omitemptysur les optionnels. Sans cela, les champs optionnels se sérialisent comme"foo": nullau lieu d’être omis.
Questions fréquentes
Utilisez des pointeurs lorsque vous devez distinguer “champ absent” de “champ à zéro”. Utilisez omitempty lorsque la valeur zéro n’est pas une valeur métier valide ("", 0, false signifient toujours “ignorer ceci”). De nombreuses équipes choisissent une option et l’appliquent de manière cohérente dans une base de code.
Chaque objet imbriqué devient une déclaration de struct nommée séparée (par exemple, User -> Address). Les types sont intégrés uniquement lorsque la struct imbriquée est petite et utilisée une fois ; sinon, vous obtenez des types propres et réutilisables.
Oui. id devient ID, url devient URL, api_key devient APIKey. C’est ce que go vet attend et ce que la plupart des guides de style Go recommandent.
Le générateur émet des structs simples avec des balises json: standard. Pour des implémentations UnmarshalJSON personnalisées (par exemple, pour des dates dans des formats non-ISO), ajoutez-les manuellement après la génération.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Formateur HTML
Mettez du HTML en forme localement dans le navigateur avec une indentation de deux ou quatre espaces. Aucun HTML n’est envoyé ni validé.
Recherche de nom de couleur
Trouvez la couleur nommée CSS standardisée la plus proche d’une valeur HEX, RGB ou HSL grâce à l’écart CIEDE2000.
Outil disponible dans d’autres langues
- JSON ke Struktur Go [ID]
- JSON thành cấu trúc [VI]
- JSON a Estructura Go [ES]
- JSON을 Go 구조체로 변환 [KO]
- JSON naar Go-structuur [NL]
- JSON till Go-struktur [SV]
- JSON→Go構造体 [JA]
- JSON เป็นโครงสร้างข้อมูล Go [TH]
- JSON إلى بنية Go [AR]
- JSON zu Go Struct [DE]
- JSON na strukturę Go [PL]
- JSON para Estrutura Go [PT]
- JSON in Struttura Go [IT]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]
- JSON to Go Struct [EN]