JSON-zu-Go-Struct-Konverter
Fügen Sie ein JSON-Objekt (oder ein JSON-Array) ein, um automatisch die entsprechenden Go-Struct-Definitionen mit json-Tags zu erzeugen.
Tipps zur Nutzung
- Sind alle Elemente eines Arrays Objekte, werden ihre Schlüssel zu einem einzigen Struct zusammengeführt. Schlüssel, die in manchen Elementen fehlen, erhalten automatisch das json-Tag `omitempty`.
- Der Name des Wurzeltyps ist standardmäßig "Root", kann aber beliebig geändert werden. Struct-Namen für verschachtelte Objekte werden automatisch erzeugt, indem der Property-Name in PascalCase umgewandelt wird.
- Ein JSON-null wird als `interface{}` ausgegeben, da Go keinen nativen nullfähigen primitiven Typ kennt. Für eine strengere Behandlung sollte ein Pointer-Typ in Betracht gezogen werden.
- Die Ausgabe ist ein leicht spaltenausgerichteter Entwurf. Wird sie nach dem Einfügen durch `gofmt` geschickt, richtet sich der Code am Standardstil des Projekts aus.
- Fügen Sie eine Beispiel-JSON-Antwort Ihrer API unverändert ein, um schnell einen Entwurf des Antwort-Structs für Ihren Go-Code zu erhalten.
Häufig gestellte Fragen
Übrigens – warum Go Structs mit json-Tags kombiniert
Go ist eine statisch typisierte Sprache, und beim Arbeiten mit JSON verlässt sich das Paket `encoding/json` der Standardbibliothek auf die Zuordnung zwischen Struct-Feldern und ihren json-Tags, um Daten zu kodieren und zu dekodieren. Einen Struct für die Antwortstruktur einer externen API von Hand zu schreiben, ist eine sich wiederholende Aufgabe, die mit jedem hinzugefügten Feld wächst, und sie taucht in vielen Go-Projekten immer wieder auf.
Dieses Tool analysiert die Struktur eines Beispiel-JSONs und generiert automatisch die passenden Struct-Definitionen samt json-Tags, wodurch diese Wiederholungsarbeit reduziert wird. Ein bekanntes Tool im selben Bereich ist quicktype, das die Umwandlung in Typen mehrerer Sprachen unterstützt; wer aber einfach nur eine Beispiel-API-Antwort einfügen und schnell einen Go-Struct erhalten möchte, profitiert von der Einfachheit eines auf genau diese Aufgabe fokussierten Tools.
Da Go keine Sprachfunktion besitzt, um ein Struct-Feld optional zu machen, ist es üblich, bei JSON-Feldern, die fehlen könnten, entweder `omitempty` zum json-Tag hinzuzufügen oder einen Pointer-Typ (wie `*string`) zu verwenden, um einen Nullwert von "kein Wert vorhanden" zu unterscheiden. Der generierte Struct ist lediglich eine mechanische Ableitung aus der Struktur – Nullable-Verhalten und künftige API-Änderungen sollten daher anhand der tatsächlichen Spezifikation manuell überprüft und angepasst werden, was gängige Praxis ist.