encoding/json – Wiederholung
JSON marshalen und unmarshalen
encoding/json – Wiederholung ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
JSON in Go
JSON ist das am häufigsten verwendete Datenformat für APIs. Das Go-Standardpaket encoding/json konvertiert zwischen Go-Werten und JSON-Text.
Marshal: Go zu JSON
json.Marshal wandelt einen Go-Wert in ein JSON-Byte-Slice um. Konvertieren Sie es in einen String, um es auszugeben.
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]int{"a": 1, "b": 2}
b, _ := json.Marshal(data)
fmt.Println(string(b))
}Ein Struct marshalen
Structs werden Feld für Feld marshaled. Exportierte Felder werden zu JSON-Schlüsseln.
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: JSON zu Go
json.Unmarshal analysiert JSON-Bytes und schreibt sie in einen Go-Wert. Übergeben Sie einen Pointer, damit die Funktion Ihre Variable befüllen kann.
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)
}Tags für Schlüsselnamen
Verwenden Sie JSON-Tags, um Schlüsselnamen zu steuern, wie bereits zuvor behandelt. Hier wird Name dem JSON-Schlüssel name zugeordnet.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.Marshal(User{"Ann"})
fmt.Println(string(b))
}Fehler immer prüfen
Sowohl Marshal als auch Unmarshal geben einen Fehler zurück. Ignorieren Sie ihn in echtem Code niemals; fehlerhaftes JSON oder nicht unterstützte Typen führen zu Fehlern.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v int
err := json.Unmarshal([]byte("not json"), &v)
fmt.Println(err)
}In Maps decodieren
Wenn Sie die Struktur im Voraus nicht kennen, unmarshalen Sie in 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"])
}Slices und Arrays
JSON-Arrays werden auf Go-Slices abgebildet. Beim Marshaling eines Slice entsteht ein JSON-Array.
package main
import (
"encoding/json"
"fmt"
)
func main() {
b, _ := json.Marshal([]string{"a", "b", "c"})
fmt.Println(string(b))
}Lesbare Ausgabe
json.MarshalIndent fügt Einrückungen für eine besser lesbare Ausgabe hinzu.
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]int{"a": 1}
b, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(b))
}Zahlen sind float64
Beim Decodieren in interface{} werden alle JSON-Zahlen in Go zu float64. Konvertieren Sie sie explizit, wenn Sie einen int benötigen.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v interface{}
json.Unmarshal([]byte("42"), &v)
fmt.Printf("%T %v\n", v, v)
}Hin- und Rückkonvertierung
Sie können Daten marshalen und anschließend unmarshalen, um sie über JSON zu kopieren. Bei unterstützten Typen bleiben die Werte erhalten.
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)
}Kurzer Check
Warum müssen Sie einen Pointer an json.Unmarshal übergeben?
Zusammenfassung
encoding/json:
json.Marshalwandelt Go-Werte in JSON umjson.Unmarshalanalysiert JSON in einen Pointer- Tags benennen Schlüssel um; Zahlen werden in
interface{}als float64 decodiert - Prüfen Sie immer den zurückgegebenen Fehler
Häufig gestellte Fragen
Ist die Lektion „encoding/json – Wiederholung“ kostenlos?
Ja — der vollständige Text von „encoding/json – Wiederholung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „encoding/json – Wiederholung“?
JSON marshalen und unmarshalen Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „encoding/json – Wiederholung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- encoding/json – Wiederholung
- encoding/xml
- encoding/csv
- gob und binäre Kodierung