Skip to main content
CheckTown
Konverter

So wandelst du JSON in Go-Structs um

Veröffentlicht 5 Min. Lesezeit
In diesem Artikel

Warum Go-Entwickler eine JSON-Struct-Generierung brauchen

Das strikte Typsystem von Go erfordert für die JSON-Deserialisierung explizite Struct-Definitionen. Anders als dynamisch typisierte Sprachen kann Go JSON nicht in eine generische Map unmarshaln, ohne Typsicherheit und IDE-Unterstützung zu verlieren. Struct-Definitionen für komplexe API-Antworten von Hand zu schreiben, ist mühsam, fehleranfällig und bremst die Entwicklung — besonders bei tief verschachtelten Objekten oder APIs mit Dutzenden von Feldern.

Unser JSON-zu-Go-Konverter analysiert Ihre JSON-Daten und erzeugt idiomatische Go-Structs mit korrekten json-Tags, exportierten Feldnamen und richtigen Typzuordnungen. Das beseitigt den Boilerplate-Code und stellt sicher, dass Ihre Structs schon beim ersten Versuch zur tatsächlichen Datenstruktur passen.

So funktioniert der Konverter

Der Konverter durchläuft die JSON-Struktur rekursiv und ordnet jeden Wert dem passenden Go-Typ zu.

  • Typinferenz — ordnet JSON-Strings dem Typ string zu, Zahlen dem Typ int oder float64 (mit Erkennung von Ganzzahlen gegenüber Gleitkommazahlen), Booleans dem Typ bool und Null-Werten Pointer-Typen
  • Struct-Tags — erzeugt automatisch `json:"fieldName"`-Tags und behält die ursprünglichen JSON-Schlüsselnamen für korrektes Marshaling und Unmarshaling bei
  • Verschachtelte Structs — erstellt für verschachtelte Objekte eigene benannte Struct-Typen, hält den Code sauber und ermöglicht die Wiederverwendung in Ihrer gesamten Anwendung

Kostenlos testen – keine Registrierung erforderlich

JSON in Go konvertieren →

Go-JSON-Konventionen

Der Konverter folgt den Konventionen und Best Practices der Go-Community für die JSON-Verarbeitung.

  • Exportierte Felder — alle Struct-Felder beginnen mit Großbuchstaben (exportiert), damit das Paket encoding/json darauf zugreifen kann, wobei die json-Tags auf die ursprünglichen kleingeschriebenen Schlüssel verweisen
  • omitempty — optionale Felder erhalten die Tag-Option omitempty, die den JSON-Encoder anweist, Felder mit Null-Wert beim Marshaling zu überspringen, was zu einer schlankeren Ausgabe führt
  • Pointer-Typen — nullbare JSON-Felder erzeugen Pointer-Typen (*string, *int) statt Null-Werten, sodass Sie zwischen „Feld fehlt“ und „Feld ist leer“ unterscheiden können

Häufig gestellte Fragen

Sollte ich Inline- oder separate Struct-Definitionen verwenden?

In den meisten Fällen sind separate benannte Structs zu empfehlen. Sie sind wiederverwendbar, testbar und erzeugen eine klarere Dokumentation. Inline-Structs (anonyme Structs) eignen sich für einmalige verschachtelte Objekte, die nirgendwo sonst referenziert werden, werden bei tiefer Verschachtelung aber schnell unleserlich.

Wie verarbeitet der Konverter Arrays mit gemischten Typen?

Enthält ein Array Elemente unterschiedlicher Typen, verwendet der Konverter interface{} (bzw. any ab Go 1.18) als Elementtyp. Bei Arrays mit einheitlicher Objektstruktur erzeugt er einen korrekt typisierten Slice mit einem benannten Struct-Elementtyp.

Kann ich Feldnamen in den erzeugten Structs anpassen?

Der Konverter erzeugt gemäß den Go-Konventionen Feldnamen in PascalCase, wobei die json-Tags die ursprünglichen JSON-Schlüssel beibehalten. Sie können Felder nach der Generierung umbenennen — der json-Tag stellt sicher, dass die Serialisierung unabhängig vom Go-Feldnamen weiterhin korrekt funktioniert.

Verwandte Tools