Wie konvertiert man eine Go-Struktur in JSON
- Go-Struktur in JSON konvertieren
- Verschachtelte Strukte in Go zu JSON konvertieren
- Einrückung in der Struktur zur JSON-Konvertierung in Go
JSON ist ein leichtgewichtiges, sprachunabhängiges Format zum Speichern und Transportieren von Daten. In Go haben wir das Paket encoding/json
, das viele eingebaute Methoden für JSON-bezogene Operationen enthält. Wir können Strukturdaten mittels Marshaling in JSON konvertieren.
Go-Struktur in JSON konvertieren
Die marshal
-Methode empfängt ein Strukturobjekt und gibt eine Byte-Scheibe der kodierten Daten zurück, die wir in Go in JSON ändern können.
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))
}
Ausgabe:
{"empname":"Dixya Lhyaho","empid":10}
Wenn wir die Number
-Eigenschaft in number
ändern, wird number
nun im Marshal-Prozess ignoriert, da das json/encoding
-Paket es nicht sehen kann.
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))
}
Ausgabe:
{"empname":"Dixya Lhyaho"}
Verschachtelte Strukte in Go zu JSON konvertieren
Lassen Sie uns eine komplexere Struktur mit verschachtelter Struktur definieren. Innerhalb der Definition der Struktur definieren wir die JSON-Tags, die die Felder unserer Structs direkt auf die Felder in unserem Marshaled JSON abbilden.
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))
}
Ausgabe:
{"position":"Senior Developer","name":{"firstname":"Dikxya","surname":"Lhyaho"}}
Einrückung in der Struktur zur JSON-Konvertierung in Go
Wir können die Funktion json.MarshalIndent()
anstelle der Funktion json.Marshal()
verwenden, um JSON in einem besser lesbaren Format zu drucken. Wir übergeben zwei zusätzliche Argumente, prefix string
und die indent string
an 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))
}
Ausgabe:
{
"position": "Senior Developer",
"name": {
"firstname": "Dikxya",
"surname": "Lhyaho"
}
}
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn