Wie JSON auf Go-Structs gemappt wird
Go verwendet exportierte Struct-Felder mit Backtick-json-Tags für die JSON-Serialisierung. Der Generator erstellt eine Struct für jedes JSON-Objekt mit einem exportierten Feld pro Schlüssel. Feldnamen folgen Go-Konventionen: Sie sind exportiert (PascalCase), und der ursprüngliche JSON-Schlüssel wird im json:"key"-Tag bewahrt. "firstName" in JSON wird also zu FirstName string `json:"firstName"` in Go.
Das Typ-Mapping folgt Standard-encoding/json-Regeln: JSON-Zeichenketten werden zu string, Ganzzahlen zu int64, Dezimalzahlen zu float64, Booleans zu bool und Arrays zu Slices ([]T). Verschachtelte Objekte generieren weitere benannte Struct-Typen. Ein nullable Feld wird als Pointer (*T) typisiert, damit der Nullwert nil sauber JSON null repräsentiert.
Die omitempty-Tag-Option kann für jedes Feld umgeschaltet werden — `json:"key,omitempty"` lässt das Feld bei der Marshalling-Ausgabe weg wenn es seinen Nullwert enthält. Das ist das Standard-Go-Muster für optionale API-Felder.
Namenskonventionen und Go-Idiome
Go hat strenge Stilkonventionen die von gofmt und golint durchgesetzt werden. Der Generator wendet sie automatisch an: Akronyme wie "id", "url", "http" und "api" werden entsprechend dem offiziellen Go-Styleguide zu ID, URL, HTTP und API großgeschrieben. Zum Beispiel wird "userId" zu UserID und "apiUrl" zu APIURL.
Struct-Namen werden aus JSON-Objektschlüsseln in PascalCase abgeleitet. Die Root-Struct heißt standardmäßig "Root" (anpassbar). Wenn dieselbe JSON-Struktur unter verschiedenen Schlüsseln mehrfach erscheint, erkennt der Generator die doppelte Form und verwendet denselben Struct-Typ wieder.
Die Ausgabe enthält eine Package-Deklaration (standardmäßig "main" für schnelles Prototyping, änderbar) und den notwendigen Import für "encoding/json" wenn Marshal/Unmarshal-Hilfsfunktionen neben den Structs generiert werden.
Go-Entwicklungs-Workflows
Go-Entwickler die mit REST-APIs arbeiten verbringen viel Zeit damit Struct-Definitionen manuell zu schreiben die JSON-Antworten widerspiegeln. Fügen Sie die API-Antwort ein, generieren Sie die Structs und verwenden Sie sofort json.Unmarshal zum Parsen der Antwort in typisierte Go-Werte.
Beim Erstellen von CLI-Tools mit cobra oder HTTP-Handlern mit net/http sind gut typisierte Anfrage- und Antwort-Structs unerlässlich. Der Generator erzeugt Structs die direkt mit json.NewDecoder(r.Body).Decode(&req) und json.NewEncoder(w).Encode(resp) nutzbar sind.
Go-Modul-Projekte die Drittanbieter-APIs aufrufen halten generierte Struct-Dateien oft in einem internal/models-Package. Die Generatorausgabe passt perfekt in dieses Muster mit einem konfigurierbaren Package-Namen.