Encodage et décodage JSON
- JSON (JavaScript Object Notation) est un format d'échange de données largement adopté.
- Il utilise une syntaxe de notation clé-valeur et est souvent utilisé pour transmettre des données sur le web.
Le package "encoding/json" de la bibliothèque standard
- Go fournit un package "encoding/json" pour le traitement des données JSON.
- Ce package comprend des fonctions pour la sérialisation (marshalling) et la désérialisation (unmarshalling) des structures Go en JSON et vice versa.
- Documentation officielle et détaillée du package : https://pkg.go.dev/encoding/json
Marshalling et Unmarshalling de données JSON
- Le marshalling est le processus de transformation de données Go en JSON. La fonction
json.Marshal()
est utilisée pour ce faire.
- L'unmarshalling est l'opération inverse : il transforme les données JSON en données Go. La fonction
json.Unmarshal()
est utilisée pour ce faire.
- Exemple de code :
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Alice", Age: 30}
// Marshalling
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(jsonData))
// Unmarshalling
var p2 Person
err = json.Unmarshal(jsonData, &p2)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(p2)
}
- Les tags struct permettent de personnaliser l'encodage et le décodage JSON en Go.
- Ils permettent notamment de spécifier le nom de la clé JSON pour un champ donné ou d'ignorer un champ.
- Exemple de code :
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
Dans cet exemple, le champ Name
sera encodé en JSON sous le nom name
et le champ Age
sous le nom age
.
Gérer les erreurs liées à l'encodage et décodage JSON
- Les erreurs lors du marshalling et unmarshalling peuvent être attrapées et gérées en Go.
- Exemple de gestion d'erreurs :
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
Dans cet exemple, si une erreur se produit lors de l'encodage, elle est imprimée et la fonction est interrompue.