Comment convertir Go struct en JSON
- Convertir la structure de Go en JSON
- Conversion des structures imbriquées en JSON dans Go
- Indentation dans la structure en JSON Conversion en Go
JSON est un format léger indépendant du langage pour le stockage et le transport des données. Dans Go, nous avons le paquet encoding/json
, qui contient de nombreuses méthodes intégrées pour les opérations liées à JSON. Nous pouvons convertir des données structurées en JSON en utilisant la conversion (marshaling).
Convertir la structure de Go en JSON
La méthode marshal
reçoit l’objet struct et retourne une tranche d’octets des données codées, que nous pouvons changer en JSON dans Go.
package main
import (
"encoding/json"
"fmt"
)
type Employee struct {
Name string `json:"empname"`
Number int `json:"empid"`
}
func main() {
employee_1 := &Employee{Name: "Dixya Lhyaho", Number: 10}
e, err := json.Marshal(employee_1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(e))
}
Production:
{"empname":"Dixya Lhyaho","empid":10}
Si nous changeons la propriété Number
en number
, number
est maintenant ignoré dans le processus de rassemblement car le paquet json/encoding
ne peut pas le voir.
package main
import (
"encoding/json"
"fmt"
)
type Employee struct {
Name string `json:"empname"`
number int `json:"empid"`
}
func main() {
employee_1 := &Employee{Name: "Dixya Lhyaho", number: 10}
e, err := json.Marshal(employee_1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(e))
}
Production:
{"empname":"Dixya Lhyaho"}
Conversion des structures imbriquées en JSON dans Go
Définissons une structure plus complexe avec des structures imbriquées. Dans la définition de la structure, nous définissons les balises JSON qui mettent en correspondance les champs de nos structures directement avec les champs de notre JSON rassemblé.
package main
import (
"encoding/json"
"fmt"
)
type Employee struct {
Position string `json:"position"`
Name Name `json:"name"`
}
type Name struct {
FirstName string `json:"firstname"`
Surname string `json:"surname"`
}
func main() {
name := Name{FirstName: "Dikxya", Surname: "Lhyaho"}
employee := Employee{Position: "Senior Developer", Name: name}
byteArray, err := json.Marshal(employee)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(byteArray))
}
Production:
{"position":"Senior Developer","name":{"firstname":"Dikxya","surname":"Lhyaho"}}
Indentation dans la structure en JSON Conversion en Go
Nous pouvons utiliser la fonction json.MarshalIndent()
au lieu de la fonction json.Marshal()
pour imprimer JSON dans un format plus lisible. Nous passons deux arguments supplémentaires, chaîne de préfixe
et la chaîne d'indentation
à MarshalIndent
.
package main
import (
"encoding/json"
"fmt"
)
type Employee struct {
Position string `json:"position"`
Name Name `json:"name"`
}
type Name struct {
FirstName string `json:"firstname"`
Surname string `json:"surname"`
}
func main() {
name := Name{FirstName: "Dikxya", Surname: "Lhyaho"}
employee := Employee{Position: "Senior Developer", Name: name}
byteArray, err := json.MarshalIndent(employee, "", " ")
if err != nil {
fmt.Println(err)
}
fmt.Println(string(byteArray))
}
Production:
{
"position": "Senior Developer",
"name": {
"firstname": "Dikxya",
"surname": "Lhyaho"
}
}
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn