← Alle Tools Code Gen

JSON zu Go Struct Generator

JSON einfügen und sofort produktionsreife Go-Structs mit korrekten json-Tags erhalten.

0 Z.

100% clientseitig

Die gesamte Verarbeitung läuft in Ihrem Browser. Ihre JSON-Daten werden nie an einen Server gesendet.

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.

FAQ

Werden meine Daten an einen Server gesendet?

Nein. Die gesamte Verarbeitung findet vollständig in Ihrem Browser statt. Ihr JSON verlässt Ihr Gerät nie.

Wie werden Go-reservierte Wörter als Feldnamen behandelt?

Go-reservierte Wörter wie "type", "func", "var", "map" und "chan" erhalten einen Unterstrich-Suffix (z.B. Type_) und der json-Tag bewahrt den ursprünglichen Schlüsselnamen.

Werden Arrays gemischter Typen behandelt?

Wenn ein JSON-Array Elemente verschiedener Typen enthält, wird der Slice-Elementtyp zu interface{} (oder any in Go 1.18+), was die dynamische Natur der Daten widerspiegelt.

Kann ich standardmäßig mit omitempty-Tags generieren?

Ja. Ein globaler Toggle fügt omitempty zu jedem Feld-Tag hinzu, was die häufigste Wahl für API-Anfrage-Structs ist bei denen Felder oft optional sind.

Verarbeitet der Generator tief verschachteltes JSON?

Ja. Beliebig verschachtelte Objekte erzeugen jeweils ihre eigene benannte Struct, und die übergeordnete Struct referenziert die untergeordnete per Name. Alle Structs werden in einer einzigen Datei in Abhängigkeitsreihenfolge ausgegeben.

Ähnliche Tools