JSON zu Go Struct

Fügen Sie ein JSON-Objekt ein und erhalten Sie die Go-Structs dazu: einen Struct für jedes Objekt, einen Slice für jede Liste und ein json-Tag, das jeden Namen so behält, wie er geschrieben wurde.

Kostenlos Läuft in Ihrem Browser Stand: Donnerstag, 12. November 2026

Der gesamte JSON-Text mit den geschweiften Klammern oben. Namen behalten ihre Reihenfolge und Zahlen ihre Ziffern. Nichts wird gesendet oder gespeichert.

Der Name des äußeren Structs. Verwenden Sie Buchstaben, Ziffern und Unterstriche, und beginnen Sie mit einem Buchstaben.

Fügt die Option omitempty hinzu, sodass encoding/json ein Feld in der Ausgabe weglässt, wenn das Feld leer ist.

Ergebnis

Go-Code — Kopieren Sie ihn oder laden Sie ihn als models.go herunter.
Prüfung — Grün, wenn das JSON umgewandelt wird. Rot nennt die Stelle und den Grund.
Go-Code

Dieses Werkzeug läuft in Ihrem Browser. Was Sie eingeben, wird nicht an uns gesendet.

So verwenden Sie es

  1. Fügen Sie ein JSON-Objekt in JSON-Objekt ein. Der gesamte Text muss ein einziges Objekt sein, mit geschweiften Klammern oben.
  2. Tippen Sie einen Name des äußeren Structs ein, etwa Product, und setzen Sie bei omitempty an jedes Tag anhängen einen Haken, wenn Sie die Option wünschen.
  3. Lesen Sie Prüfung ab. Grün bedeutet, dass das Objekt umgewandelt wurde; rot nennt die Stelle mit dem Problem.
  4. Kopieren Sie den Go-Code in eine Datei mit einer package-Klausel oder laden Sie ihn als models.go herunter.

Wie die Go-Typen gewählt werden

Jeder JSON-Wert erhält den Go-Typ, der ihn aufnehmen kann. Eine Zeichenkette wird zu string, und true oder false wird zu bool. Die Unmarshal-Regeln von encoding/json legen fest, wie das JSON in diese Typen zurückgelesen wird.

  • Eine ganze Zahl, die in 64 Bit passt, wird zu int64. Eine Zahl mit Komma oder Exponent, etwa 1.0 oder 2e3, wird zu float64, und ebenso eine ganze Zahl, die zu groß für int64 ist.
  • Ein null wird zu any. Ein null neben einem Wert eines anderen Typs übernimmt diesen Typ, weil ein null einen Go-Wert eines anderen Typs unverändert lässt.
  • Ein Objekt wird zu einem Struct, und eine Liste übernimmt den Typ, den ihre Einträge gemeinsam haben. Objekte in einer Liste werden zu einem Struct zusammengeführt, eine Liste mit gemischten Typen wird zu []any.
  • Ein leeres Objekt wird zu einem leeren Struct, eine leere Liste zu []any.

Namen, Tags und Kollisionen

Jedes Feld übernimmt seinen Namen aus dem JSON-Namen: Die Wörter werden zusammengefügt, und jedes beginnt mit einem Großbuchstaben, sodass user-name zu UserName wird. Die Go-Spezifikation exportiert ein Feld, dessen Name mit einem Großbuchstaben beginnt; deshalb wird der erste Buchstabe groß geschrieben. Das json-Tag behält den Namen so, wie er geschrieben wurde, damit derselbe Schlüssel beim Zurücklesen gefunden wird.

Zwei Namen, die denselben Go-Namen ergeben, erhalten eine Zahl, etwa AB und AB2, und ein Struct, dessen Name schon belegt ist, bekommt ebenfalls eine Zahl. Ein Listeneintrag erhält seinen Namen von der Liste: products ergibt einen Struct namens Product, und ein Name ohne Pluralregel bekommt die Endung Item.

  • Ein Name mit Komma, ein einzelnes Minuszeichen oder ein Name ohne Zeichen kann kein json-Tag sein, deshalb benennt das Werkzeug diesen Schlüssel und bricht ab.
  • Mit omitempty erhält jedes Tag die Option. Das Werkzeug schreibt den Anfangsbuchstaben des äußeren Structs groß, sodass product zu Product wird.

Was das Werkzeug nicht tut

  • Es fügt keine package-Klausel und keine Importe hinzu. Fügen Sie den Code in eine Datei ein, die ihre eigene package-Klausel hat.
  • Es verwendet keine Zeiger für optionale Felder. Ein Feld, das im JSON fehlt oder null ist, wird nicht von einem Feld unterschieden, das den Nullwert hält.
  • Es ersetzt Namen nicht durch die üblichen Abkürzungen von Go, deshalb wird id zu Id. Benennen Sie das Feld von Hand um, wenn Ihr Codestil ID verlangt.

Beispiel: eine Bestellung mit Besitzer und zwei Artikeln

Das JSON hat eine ganze Zahl, eine Dezimalzahl, ein Objekt und eine Liste mit zwei Objekten. Die Tabelle zeigt das Go-Feld, das aus jedem JSON-Namen wird. Das Werkzeug schreibt die drei Structs unter der Tabelle, mit dem äußeren Struct Order zuerst.

JSON-Name Go-Feld Go-Typ Tag
id Id int64 json:"id"
ratio Ratio float64 json:"ratio"
owner Owner Owner json:"owner"
items Items []Item json:"items"

Häufig gestellte Fragen

Warum ist eine ganze Zahl ein int64 und kein int?

Der Typ int64 ist eine feste vorzeichenbehaftete 64-Bit-Ganzzahl und hält jede ganze Zahl von -9223372036854775808 bis 9223372036854775807. Das Werkzeug verwendet ihn für jede ganze Zahl, die hineinpasst, damit kein Wert überläuft. Ändern Sie den Typ von Hand in int, wenn Ihr Code das braucht.

Warum wird ein null zu any?

Go hat keinen Typ, der allein einen null-Wert hält. Deshalb verwendet das Werkzeug any, das jeden Wert aufnimmt. Ein null neben einem Wert eines anderen Typs übernimmt stattdessen diesen Typ, weil encoding/json beim Lesen eines null einen Go-Wert eines anderen Typs unverändert lässt.

Warum heißt mein Feld Id und nicht ID?

Das Werkzeug schreibt den Anfangsbuchstaben jedes Wortes groß und wendet die üblichen Abkürzungen von Go nicht an, deshalb wird id zu Id. Das json-Tag lautet weiterhin id, die Daten werden also gleich gelesen. Benennen Sie das Feld um, wenn Ihr Codestil ID verlangt.

Welche Go-Version braucht die Ausgabe?

Die Ausgabe verwendet any für ein null, und any ist ein Alias für interface{}, der mit Go 1.18 eingeführt wurde. Ist Ihr Code älter, ersetzen Sie any durch interface{}, das denselben Typ bezeichnet.

Warum lehnt das Werkzeug manche Namen ab?

Ein json-Tag enthält den Namen, gefolgt von Optionen, die nach einem Komma beginnen. Ein Name mit Komma kann deshalb nicht in einem Tag stehen. Ein Tag mit einem einzelnen Minuszeichen blendet das Feld aus, deshalb wird auch dieser Name abgelehnt.

Wird das JSON, das ich einfüge, irgendwohin gesendet?

Nein. Die Umwandlung läuft in Ihrem Browser, und nichts, was Sie einfügen, wird gespeichert oder an unseren Server gesendet. Fügen Sie kein Passwort und kein Token in eine Seite ein, der Sie nicht vertrauen.

Quellen

Zahlen und Text zuletzt geprüft: Donnerstag, 12. November 2026.

Wir verwenden notwendige Cookies, damit die Website funktioniert. Mit Ihrer Einwilligung verwendet Google außerdem Werbe-Cookies, um personalisierte Anzeigen zu zeigen. Wenn Sie diese ablehnen, sehen Sie weiterhin Anzeigen, sie werden aber nicht personalisiert.