Récapitulatif de encoding/json
Sérialiser et désérialiser du JSON
Récapitulatif de encoding/json est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
JSON en Go
JSON est le format de données le plus courant pour les API. Le paquet standard encoding/json de Go convertit les valeurs Go en texte JSON et inversement.
Marshal : de Go vers JSON
json.Marshal transforme une valeur Go en tranche d’octets JSON. Convertissez-la en chaîne pour l’afficher.
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]int{"a": 1, "b": 2}
b, _ := json.Marshal(data)
fmt.Println(string(b))
}Sérialiser une structure
Les structures sont sérialisées champ par champ. Les champs exportés deviennent des clés JSON.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}Unmarshal : de JSON vers Go
json.Unmarshal analyse des octets JSON pour les placer dans une valeur Go. Transmettez un pointeur afin que la fonction puisse remplir votre variable.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
var u User
json.Unmarshal([]byte("{\"Name\":\"Bob\",\"Age\":25}"), &u)
fmt.Println(u)
}Balises pour les noms de clés
Utilisez des balises json pour contrôler les noms de clés, comme vu précédemment. Ici, Name correspond au nom de clé JSON.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.Marshal(User{"Ann"})
fmt.Println(string(b))
}Vérifiez toujours les erreurs
Marshal et Unmarshal renvoient tous deux une erreur. Dans du code réel, ne l’ignorez jamais : un JSON mal formé ou des types non pris en charge produisent des erreurs.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v int
err := json.Unmarshal([]byte("not json"), &v)
fmt.Println(err)
}Décoder dans des tables associatives
Lorsque vous ne connaissez pas la structure à l’avance, désérialisez les données dans map[string]interface{}.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var m map[string]interface{}
json.Unmarshal([]byte("{\"x\":1,\"y\":\"hi\"}"), &m)
fmt.Println(m["x"], m["y"])
}Tranches et tableaux
Les tableaux JSON correspondent aux tranches Go. La sérialisation d’une tranche produit un tableau JSON.
package main
import (
"encoding/json"
"fmt"
)
func main() {
b, _ := json.Marshal([]string{"a", "b", "c"})
fmt.Println(string(b))
}Affichage indenté
json.MarshalIndent ajoute une indentation pour obtenir une sortie lisible par les utilisateurs.
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]int{"a": 1}
b, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(b))
}Les nombres sont des float64
Lors du décodage dans interface{}, tous les nombres JSON deviennent des float64 en Go. Convertissez-les explicitement si vous avez besoin d’un int.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v interface{}
json.Unmarshal([]byte("42"), &v)
fmt.Printf("%T %v\n", v, v)
}Aller-retour
Vous pouvez sérialiser, puis désérialiser les données pour les copier au moyen de JSON. Les valeurs restent intactes pour les types pris en charge.
package main
import (
"encoding/json"
"fmt"
)
func main() {
orig := []int{1, 2, 3}
b, _ := json.Marshal(orig)
var back []int
json.Unmarshal(b, &back)
fmt.Println(back)
}Vérification rapide
Pourquoi devez-vous transmettre un pointeur à json.Unmarshal ?
Récapitulatif
encoding/json :
json.Marshaltransforme les valeurs Go en JSONjson.Unmarshalanalyse le JSON dans un pointeur- Les balises renomment les clés ; les nombres sont décodés en float64 dans interface{}
- Vérifiez toujours l’erreur renvoyée
Questions Fréquemment Posées
La leçon « Récapitulatif de encoding/json » est-elle gratuite ?
Oui — le texte complet de « Récapitulatif de encoding/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 « Récapitulatif de encoding/json » ?
Sérialiser et désérialiser du JSON 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 1 sur 4.
Combien de temps prend la leçon « Récapitulatif de encoding/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
- Récapitulatif de encoding/json
- encoding/xml
- encoding/csv
- gob et encodage binaire