Links Go einfügen und auf "Konvertieren" klicken — wir machen JSON drausGo Code einfügen

Was dieses Tool macht

Du hast einen Go Struct mit json:"..." Tags und irgendwo ein Composite Literal (order := Order{...}), und du brauchst das JSON, das encoding/json daraus machen würde. Beides in den linken Editor einfügen, Convert drücken. Das Tool liest die Tags, wendet omitempty und - an, handhabt nil Pointer und liefert JSON, das genau dem entspricht, was json.MarshalIndent ausspucken würde — damit sparst du dir den Umweg über go run.

Das Tool folgt der echten Go-Marshalling-Semantik, keine naive Ersetzung. Exportierte Feldnamen werden durch den ersten Teil des json Tags umbenannt. omitempty wirft Zero Values raus (leerer String, 0, false, nil, leerer Slice/Map). Ein Tag - entfernt das Feld komplett. Eingebettete (anonyme) Struct-Felder werden genau so promoviert wie in encoding/json. time.Time kommt als RFC 3339 String raus, im RFC 8259-kompatiblen Format, und Byte-Slices ([]byte) werden base64-kodiert.

Numerische Typen folgen den Go-Regeln: float64 behält seine Präzision, int/int64 bleiben Zahlen, und ein nil Pointer wird zu JSON null. Slices werden JSON Arrays; ein nil Slice wird ebenfalls null (nicht []) — das entspricht dem Default-Verhalten von Marshal. map[string]V wird ein JSON Object. Du kannst mehrere Structs auf einmal einfügen — jede Instanz landet als Top-Level-Eintrag.

So nutzt du es

Drei Schritte. Funktioniert für einen kleinen Struct oder eine ganze <code>types.go</code>.

1

Go einfügen (oder das Beispiel ausprobieren)

Pack die Struct-Definitionen plus ein Composite Literal (order := Order{...}) in den linken Editor. Ein einzelner Struct, mehrere Structs mit eingebetteten Feldern oder eine Package-Level-Deklaration — alles okay. Klick auf Beispiel laden für einen realistischen Startpunkt.

Die package-Zeile und imports kannst du drinlassen — der Parser ignoriert sie. Struct Tags, Method Receiver und Kommentare sind alle unproblematisch. Als Referenz listet die encoding/json.Marshal-Doku jede Regel auf, der dieses Tool folgt. Das Go Source Repo lohnt einen Blick, wenn du auf einen Edge Case triffst.

2

Convert drücken

Klick auf den grünen Convert-Button. Das Tool parst die Struct-Definitionen, löst das Composite Literal auf, wendet die Tag-Regeln an und produziert eingerücktes JSON.

3

JSON kopieren

Das rechte Panel füllt sich mit JSON, das bereit ist für einen API-Request, eine Test-Tabelle, eine Config-Datei oder eine Fixture, die du mit os.ReadFile lädst.

Wann das echt hilft

HTTP-Handler Request/Response-Samples

Du hast einen Request- oder Response-Struct für einen <code>net/http</code>- oder <code>gin</code>-Handler. Einfügen mit Literal und du hast einen JSON-Body, den du mit curl abschickst oder in Postman einfügst.

Fixtures für Table-Driven Tests

Eine Struct-Instanz aus einem Table Test in eine eigenständige JSON-Datei konvertieren — für Golden-File-Testing oder externe Tools.

Kubernetes CRDs und Manifests

Einen Go Struct, der eine Custom Resource oder ein Controller-Payload abbildet, in die JSON-Form bringen, die <code>kubectl apply</code> oder die Kubernetes API erwarten.

Kafka / NATS / gRPC-Gateway Messages

Einen Go Message Struct nach JSON serialisieren — für Producer-Tests, Sample-Payloads oder Doku, ohne die ganze Pipeline hochzufahren.

Häufige Fragen

Berücksichtigt es den json Struct Tag?

Ja. Der erste Tag-Wert benennt das Feld um, omitempty entfernt Zero Values, und - schließt das Feld komplett aus. Entspricht den Regeln, die in der encoding/json Marshal-Referenz dokumentiert sind.

Wie werden time.Time und []byte behandelt?

time.Time wird als RFC 3339 formatiert (z. B. "2026-03-14T10:30:00Z"), passend zu time.Time.MarshalJSON. []byte wird base64-kodiert als JSON String — das Default-Verhalten der Standard Library.

Und nil Pointer und nil Slices?

Ein nil Pointer wird zu JSON null. Ein nil Slice ebenfalls null (nicht []) — das ist Go-Default. Wenn du ein leeres Array willst, initialisier den Slice mit []T{}.

Werden Felder aus eingebetteten (anonymen) Structs promoviert?

Ja. Felder eines eingebetteten Structs werden ins äußere Objekt geflattet — außer der eingebettete Struct hat selbst einen json Tag. Gleiche Regeln wie bei encoding/json.

Kann ich eine ganze Datei mit mehreren Structs einfügen?

Klar. Jeder Struct-Typ, von dem im eingefügten Code eine Instanz vorkommt, landet als eigener Eintrag im JSON. Verschachtelte Struct-Typen werden dort inline expandiert, wo sie verwendet werden.

Wird mein Code irgendwo gespeichert?

Der Code wird zum Konvertieren ans Backend geschickt, aber weder persistiert noch geloggt. Wie bei jedem Online-Tool: bei sensiblem Code vorher nochmal drüberschauen.

Andere Tools, die du brauchen könntest

Go zu JSON ist nur ein Puzzleteil. Diese hier passen gut dazu: