Arbeiten mit JSON in Go: Parsing und Serialisierung für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die Arbeit mit JSON in Go



JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das häufig in der Webentwicklung, bei APIs und in Konfigurationsdateien verwendet wird. Die Sprache Go (Golang) bietet das integrierte Paket encoding/json, mit dem Sie Daten einfach parsen (decodieren) und serialisieren (codieren) können. In diesem Artikel werden wir die Grundlagen der Arbeit mit JSON in Go anhand praktischer Beispiele erläutern, die auch für Anfänger verständlich sind.



Grundlagen des Pakets encoding/json



Das Paket encoding/json ist eine Standardbibliothek von Go, die keine zusätzliche Installation erfordert. Die beiden wichtigsten Werkzeuge in diesem Paket sind die Funktionen json.Marshal (Serialisierung) und json.Unmarshal (Deserialisierung).



Strukturen und JSON-Tags



In Go werden Daten normalerweise als Strukturen (struct) dargestellt. Zur Steuerung der Feldnamen in JSON werden Tags verwendet. Betrachten wir ein einfaches Beispiel:



package main

import ( "encoding/json" "fmt")

// Definieren einer Struktur mit JSON-Tagstype Person struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email,omitempty"` IsAdmin bool `json:"is_admin"`}

func main() { // Erstellen einer Instanz der Struktur person := Person{ Name: "Ivan Petrov", Age: 30, Email: "ivan@example.com", IsAdmin: true, } // Serialisieren in JSON jsonData, _ := json.Marshal(person) fmt.Println(string(jsonData))}


Ergebnis der Ausführung:



{"name":"Ivan Petrov","age":30,"email":"ivan@example.com","is_admin":true}


Wichtige Punkte:

  • Das Tag json:"name" gibt an, wie das Feld im JSON heißen wird
  • Die Option omitempty überspringt leere Felder (Nullwerte)
  • Strukturfelder müssen exportierbar sein (mit einem Großbuchstaben beginnen)


Serialisierung (Marshal) von Daten in JSON



Serialisierung ist der Prozess der Umwandlung einer Go-Struktur oder eines anderen Datentyps in einen JSON-String. Die Funktion json.Marshal gibt ein Byte-Slice ([]byte) und einen Fehler zurück.



Beispiele für die Serialisierung verschiedener Typen



package main

import ( "encoding/json" "fmt")

type Product struct { ID int `json:"id"` Name string `json:"name"` Price float64 `json:"price"` Tags []string `json:"tags,omitempty"` InStock bool `json:"in_stock"`}

func main() { // Serialisierung einer Struktur product := Product{ ID: 101, Name: "Laptop", Price: 79999.99, Tags: []string{"Elektronik", "Laptops"}, InStock: true, } // Schöne Ausgabe mit Einrückungen jsonData, _ := json.MarshalIndent(product, "", " ") fmt.Println(string(jsonData)) // Serialisierung eines Slices von Strukturen products := []Product{ {ID: 1, Name: "Maus", Price: 1500.00, InStock: true}, {ID: 2, Name: "Tastatur", Price: 3500.00, InStock: false}, } jsonArray, _ := json.Marshal(products) fmt.Println(string(jsonArray))}


Ergebnis:



{  "id": 101,  "name": "Laptop",  "price": 79999.99,  "tags": [    "Elektronik",    "Laptops"  ],  "in_stock": true}[{"id":1,"name":"Maus","price":1500,"in_stock":true},{"id":2,"name":"Tastatur","price":3500,"in_stock":false}]


Parsing (Unmarshal) von JSON in Go



Parsing ist der umgekehrte Prozess: die Umwandlung eines JSON-Strings in eine Go-Struktur. Dazu wird die Funktion json.Unmarshal verwendet.



Basisbeispiel für Parsing



package main

import ( "encoding/json" "fmt" "log")

type User struct { Username string `json:"username"` Age

Blogs

Buchempfehlungen