Go-Struct-zu-JSON-Beispielgenerator
Fügen Sie eine Go-Struct-Definition mit json-Tags ein, um automatisch passende JSON-Beispieldaten zu erzeugen. Unterstützt verschachtelte Structs, Slices, omitempty und json:"-" — praktisch für API-Mocks und Postman-Beispiele.
Beispiel-JSON aus einer Go-Struktur erzeugen
Wer eine API-Attrappe aufsetzt oder ein Antwortbeispiel in Postman hinterlegt, schreibt am Ende von Hand aus, welches JSON eine Strukturdefinition tatsächlich hervorbringt. Dieses Werkzeug erzeugt eben diese Gestalt als Beispiel-JSON allein aus der eingefügten Go-Strukturdefinition und berücksichtigt dabei verschachtelte Strukturen, Slices, `omitempty` und `json:"-"` gleichermaßen.
**Entscheidend ist hier, dass ein Go-Feldname nicht zwangsläufig zum JSON-Schlüssel wird.** Wo ein json-Tag vorhanden ist, hat es Vorrang, und ein mit `json:"-"` versehenes Feld erscheint überhaupt nicht. Da `omitempty` ein Feld beim Nullwert fallen lässt, **kann schon der Bestand an Schlüsseln zwischen zwei Kodierungen derselben Struktur abweichen.** Die Definition bloß mit dem Auge zu lesen lädt daher zu Irrtümern über die wirkliche Gestalt des JSON ein; sie maschinell auszufalten ist genau die Aufgabe dieses Werkzeugs. Die erzeugten Werte sind für jeden Typ nur stellvertretend, ersetzen Sie sie also durch sinnvolle Daten, ehe Sie die Ausgabe verwenden.
So gehen Sie vor
- Fügen Sie die Strukturdefinitionen ein Mehrere zusammengehörige Strukturen dürfen ohne Weiteres gemeinsam eingefügt werden.
- Benennen Sie die gewünschte Struktur **Geben Sie sie an, wenn mehrere vorhanden sind. Bleibt das Feld leer, wird die erste verwendet.**
- Sehen Sie das erzeugte JSON durch Verschachtelte Strukturen und Slices erscheinen vollständig ausgefaltet.
- Setzen Sie eigene Werte ein Es stehen stellvertretende Werte darin; ersetzen Sie sie durch Daten, die zu Ihrem Zweck passen.
Tipps für die Nutzung
- Fügen Sie mehrere Structs zusammen ein, damit die Typen verschachtelter Felder automatisch aufgelöst und rekursiv als Beispielobjekte erzeugt werden (falls eine Definition fehlt, wird ein leeres Objekt {} verwendet und eine Warnung angezeigt).
- Geben Sie einen Ziel-Struct-Namen an, um festzulegen, welche Struct als Wurzel dient, wenn Ihre Eingabe mehrere enthält (bei leerem Feld wird die zuerst auftretende Struct verwendet).
- Felder mit dem Tag json:"-" werden aus der JSON-Ausgabe ausgeschlossen. Felder mit omitempty erzeugen ihren Schlüssel weiterhin ganz normal, entfernen Sie ihn bei Bedarf manuell.
- Die erzeugten Werte sind lediglich Platzhalter je nach Typ (Strings werden zu "example", Zahlen zu 1 usw.). Ersetzen Sie sie durch echte Daten, wenn Sie ein reales API-Antwortbeispiel benötigen.
- Dieses Tool ist das Gegenstück zum Schwester-Tool JSON-zu-Go-Struct-Konverter. Damit lässt sich eine in einem Go-Handler definierte Struct schnell in eine Beispiel-Payload für Ihr Frontend- oder QA-Team umwandeln.
Wofür Sie es nutzen können
Beim Aufsetzen einer API-Attrappe
**Steht das Antwortbeispiel schon vor dem Server fest, muss die Arbeit an der Oberfläche nicht warten.**
Beim Einfügen von Beispielen in die Dokumentation
Es liefert den Stoff für ein Postman-Beispiel oder eine OpenAPI-Probe.
Beim Prüfen der Wirkung eines Tags
Sie sehen in greifbarer Form, was `omitempty` oder `json:"-"` tatsächlich hervorbringen.
Beim Abstimmen der Gestalt mit der Oberfläche
Konkretes JSON zu zeigen lässt weniger Raum für Missverständnisse, als eine Typdefinition zu überreichen.
Begriffe der Kodierung in Go
- Json-Tag
- Die einem Feld beigefügte Anmerkung der Form `json:"user_id"`, die **den Schlüssel auf der JSON-Seite benennt.** Ohne sie wird der Feldname unverändert übernommen.
- Omitempty
- Eine Angabe, die **den Schlüssel gänzlich aus der Ausgabe nimmt, wenn der Wert der Nullwert ist.** Zu beachten ist, dass auch eine 0 oder eine leere Zeichenkette mit entfällt.
- Json:"-"
- Eine Angabe, die das Feld aus dem JSON heraushält. Sie dient dazu, intern genutzte Felder zu verbergen.
- Nullwert
- Der für jeden Typ festgelegte Anfangswert: 0 bei Zahlen, leer bei Zeichenketten, nil bei Zeigern und Slices.
- Slice
- Eine Folge veränderlicher Länge, die im JSON zu einem Array wird. **Ein nil-Slice wird als `null` geschrieben, was es vom leeren Array unterscheidet.**
- Eingebettetes Feld
- Die Schreibweise, die eine andere Struktur allein durch Angabe ihres Typnamens aufnimmt. Im JSON stehen deren Felder auf derselben Ebene wie die Schlüssel der übergeordneten Struktur.
Häufig gestellte Fragen
Übrigens – das Gegenstück zur JSON-zu-Go-Struct-Konvertierung
Beim Bau einer Web-API in Go wird die Form der Antwort meist durch die Kombination aus Struct und json-Tags definiert. Wenn aber ein Frontend-Entwickler oder QA-Ingenieur das Verhalten der API überprüfen möchte, ist es mühsam und fehleranfällig, den Go-Code zu lesen und jeden Feldtyp im Kopf in JSON zu übersetzen.
Dieses Tool führt genau die umgekehrte Operation seines Schwester-Tools „JSON-zu-Go-Struct-Konverter“ aus. Fügen Sie eine Go-Struct-Definition ein, und es erzeugt eine JSON-Beispiel-Payload mit Schlüsselnamen gemäß den json-Tags und Platzhalterwerten passend zum Typ jedes Feldes — bereit zur direkten Verwendung in einem Postman-Beispiel oder einem Frontend-Mock.
Dennoch ist es kein echter Go-Compiler, sondern ein einfacher Parser auf Basis regulärer Ausdrücke und zeilenweiser Analyse. Er verarbeitet einfache Felddefinitionen sowie im selben Eingabetext gemeinsam eingefügte verschachtelte Structs, aber komplexe Notationen wie verschachtelte anonyme Structs oder mehrzeilige Typdeklarationen werden möglicherweise nicht korrekt geparst. Betrachten Sie das Ergebnis als ersten Entwurf und gleichen Sie die endgültige Form mit dem tatsächlichen Go-Quellcode ab.