Machen Sie aus einem JSON-Beispiel Go-Structs mit json-Tags, int oder float64, Pointern und omitempty
Läuft in Ihrem Browser. Nichts, was Sie eingeben, wird irgendwohin gesendet. Geprüft am 16. Oktober 2026.Fügen Sie ein JSON-Beispiel ein und erhalten Sie Go-Struct-Typen mit json-Tags, bereit für json.Unmarshal. Ganze Zahlen werden zu int, über 2.147.483.647 zu int64, und jede Dezimalzahl macht ein Feld zu float64; ein Wert, der manchmal null ist, wird zum Pointer, und Schlüssel, die in manchen Objekten fehlen, erhalten omitempty.
Diese Seite wurde maschinell aus dem englischen Original übersetzt. Die Übersetzung wurde noch von keinem Menschen geprüft; maßgeblich ist die englische Fassung. Englisches Original lesen
Fügen Sie ein JSON-Beispiel, etwa eine API-Antwort, in das linke Feld ein.
Die Go-Typen erscheinen während der Eingabe: ein Struct pro Objekt, mit json-Tags und Namen im Go-Stil wie UserID.
Wählen Sie Verschachtelte Structs inline oder omitempty für jedes Feld, wenn Sie es möchten, und legen Sie den Namen des Wurzeltyps fest.
Klicken Sie auf Kopieren oder auf Herunterladen, um eine .go-Datei zu speichern, und ergänzen Sie Ihre package-Zeile.
Go dekodiert JSON in Structs, und jedes Feld braucht den richtigen Typ und ein Tag json:"...", das den Schlüssel nennt. Dieser Konverter schreibt diese Typen aus einem Beispiel, sodass eine API-Antwort mit 200 Zeilen mit einem Einfügen zu korrektem Go wird.
Wie die Typen gewählt werden.
| JSON-Wert | Go-Typ |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (nur ganze Zahlen) | int, oder int64 über 32 Bit hinaus |
| 4.5 (irgendeine Dezimalzahl gesehen) | float64 |
| null und zusätzlich ein Typ | ein Pointer, etwa *string |
| nur null oder gemischte Arten | any |
| [ ... ] | ein Slice, etwa []string |
| { ... } | ein benanntes Struct oder ein Inline-Struct |
Arrays von Objekten. Alle Objekte eines Arrays werden zu einem Struct zusammengeführt, sodass ein Feld, das nur in einigen vorkommt, trotzdem vorhanden ist, mit ,omitempty im Tag. Zwei Objekte mit genau denselben Schlüsseln und Typen teilen sich einen Typnamen.
Namen. Schlüssel werden zu exportierten Go-Namen im Go-Stil: Aus user_id wird UserID, aus avatar_url AvatarURL, nach der Akronymliste von golint. Ein Schlüssel, der mit einer Ziffer beginnt, erhält ein vorangestelltes N; zwei Schlüssel, die denselben Namen ergeben, werden nummeriert. Ein Schlüssel mit Zeichen, die ein Tag nicht aufnehmen kann, etwa einem Komma, wird mit einem Kommentar markiert, weil encoding/json ihn nicht zuordnen würde.
Optionen. Verschachtelte Structs inline schreibt einen einzigen Typ mit anonymen Structs darin, was zu einer einmaligen Antwort passt. omitempty für jedes Feld passt zu Structs, die Sie auch serialisieren. Der Wurzeltyp heißt Root, sofern Sie keinen Namen vergeben.
Jede Ausgabe wurde geprüft, indem das Go zurückgelesen und das Beispiel nach den Regeln von encoding/json dekodiert wurde. Nichts, was Sie einfügen, verlässt den Browser.
Fügen Sie ein JSON-Beispiel in den Konverter ein, und das Go-Struct erscheint daneben, mit einem json-Tag an jedem Feld und verschachtelten Objekten als eigene Typen. Kopieren Sie es in Ihr Paket und dekodieren Sie mit json.Unmarshal(data, &v), wobei v eine Variable des Wurzeltyps ist.
Nutzen Sie int, wenn jeder Beispielwert eine ganze Zahl ist, und float64, wenn irgendein Wert Nachkommastellen hat, weil encoding/json sich weigert, 4.5 in ein int zu schreiben. Der Konverter entscheidet je Feld und wählt int64, wenn eine ganze Zahl über 2.147.483.647 liegt.
Ein Feld, das sowohl als null als auch mit Wert vorkommt, wird zum Pointer, etwa *string, sodass nil null bedeutet und eine leere Zeichenkette davon verschieden bleibt. Ein Feld, das nur je null war, wird zu any, da das Beispiel nicht sagt, was es sonst enthielte.
Mit omitempty lässt json.Marshal das Feld weg, wenn es den Nullwert enthält: eine leere Zeichenkette, 0, false, nil oder ein leeres Slice. Der Konverter fügt es Schlüsseln hinzu, die in manchen Objekten eines Arrays fehlen, und ein Schalter fügt es jedem Feld hinzu.
Der Go-Stil, den golint und die meisten Linter prüfen, schreibt Akronyme in Großbuchstaben: ID, URL, HTTP, API, JSON und etwa vierzig weitere. Das json-Tag behält den ursprünglichen Schlüssel, user_id oder userId, sodass das Dekodieren weiterhin genau zur API passt.
Nein. Die Umwandlung läuft in Ihrem Browser ohne Anfrage an einen Server, und das JSON wird nicht gespeichert, sodass API-Antworten mit Tokens oder persönlichen Daten auf Ihrem Gerät bleiben. Schließen Sie den Tab, und nichts bleibt zurück.
Sätze und Regeln ändern sich; prüfen Sie die Quelle, bevor Sie sich auf eine Zahl verlassen.
Kommen Sie nicht weiter? Fragen Sie zu JSON-zu-Go-Struct-Konverter und jeder, der es weiß, kann antworten. Kein Konto nötig.