Encoder et décoder du JSON
Marshal, Unmarshal et balises de struct
Encoder et décoder du JSON est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Présentation de encoding/json
Le paquetage encoding/json de Go sérialise les valeurs Go en JSON et désérialise le JSON en valeurs Go à l’aide d’étiquettes de structure et de la réflexion.
json.Marshal
json.Marshal convertit une valeur Go en octets JSON. La fonction renvoie une erreur pour les types non pris en charge (canaux, fonctions, nombres complexes).
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
u := User{Name: "Alice", Age: 30}
data, err := json.Marshal(u)
fmt.Println(string(data)) // {"name":"Alice","age":30}json.Unmarshal
json.Unmarshal décode du JSON dans une valeur Go. La cible doit être un pointeur.
var u User
err := json.Unmarshal(data, &u)
fmt.Println(u.Name) // "Alice"Étiquettes de structure
Utilisez les étiquettes de structure json: pour contrôler les noms de champs, omettre les valeurs nulles et ignorer les champs non exportés.
type Product struct {
ID int `json:"id"`
Price float64 `json:"price,omitempty"` // omit if zero
secret string // unexported: ignored
}json.Encoder / json.Decoder
Pour le traitement en flux (corps de réponse ou de requête HTTP), utilisez Encoder et Decoder plutôt que Marshal/Unmarshal afin d’éviter de charger toute la charge utile en mémoire.
// Writing
json.NewEncoder(w).Encode(user)
// Reading
var u User
json.NewDecoder(r.Body).Decode(&u)Décoder vers map[string]any
Décodez un JSON inconnu dans une map générique :
var m map[string]any
json.Unmarshal(data, &m)
fmt.Println(m["name"])json.Number
Par défaut, les nombres des maps génériques sont décodés comme des float64. Utilisez decoder.UseNumber() pour les décoder comme des json.Number tout en préservant leur précision.
dec := json.NewDecoder(r)
dec.UseNumber()
var m map[string]any
dec.Decode(&m)Sérialisation personnalisée
Implémentez json.Marshaler ou json.Unmarshaler pour contrôler l’encodage et le décodage d’un type, par exemple pour des formats de date personnalisés.
func (d Date) MarshalJSON() ([]byte, error) {
return json.Marshal(d.Format("2006-01-02"))
}Omettre des champs
Utilisez omitempty pour ignorer les valeurs nulles. Utilisez json:"-" pour exclure systématiquement un champ de la sortie JSON, quelle que soit sa valeur.
Hidden string `json:"-"`Gérer null
La désérialisation de JSON null produit une valeur nulle Go pour les scalaires ou définit un pointeur à nil. La sérialisation d’un pointeur nil produit null.
Mise en forme lisible
Utilisez json.MarshalIndent pour produire une sortie lisible par un humain :
data, _ := json.MarshalIndent(u, "", " ")Vérification rapide
Que fait l’étiquette de structure `json:"name,omitempty"` ?
Récapitulatif : encodage et décodage JSON
Points essentiels :
- json.Marshal/Unmarshal pour les données en mémoire ; Encoder/Decoder pour les flux
- Les étiquettes de structure contrôlent les noms, omitempty et l’exclusion
- Les types personnalisés implémentent Marshaler/Unmarshaler
- Utilisez json.MarshalIndent pour la sortie de débogage
Questions Fréquemment Posées
La leçon « Encoder et décoder du JSON » est-elle gratuite ?
Oui — le texte complet de « Encoder et décoder du JSON » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Encoder et décoder du JSON » ?
Marshal, Unmarshal et balises de struct Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Encoder et décoder du JSON » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des fichiers avec os et bufio
- Écrire des fichiers et des fichiers temporaires
- Encoder et décoder du JSON
- JSON et CSV en flux