logo
GeekFormat

JSON zu Go

Fügen Sie JSON links ein, und Go-struct-Typdefinitionen, die direkt in Go-Projekten verwendet werden können, werden automatisch rechts generiert. Reine Browser-Lokalverarbeitung, keine Registrierung oder Upload erforderlich.

Ähnliche Tools

Über JSON zu Go: JSON in Gos stark typisierten Struct umwandeln

JSON zu Go ist der Prozess der automatischen Konvertierung von Daten im JSON-Format in Struct-Typdefinitionen der Go-Sprache. JSON ist das häufigste Datenaustauschformat in REST-APIs, Konfigurationsdateien, Nachrichtenwarteschlangen und Protokollen, während Go eine stark typisierte Sprache ist; während der Entwicklung muss die dynamische Struktur von JSON oft zu Struct gemappt werden, bevor Deserialisierung mit encoding/json erfolgt. Manuelles Schreiben von Structs, insbesondere verschachtelter Objekte, führt leicht zu fehlenden Feldern oder falschen Typen; dieses Tool zielt darauf ab, repetitive Arbeit zu automatisieren.

Gos Struct ist ein zusammengesetzter Datentyp, deklariert mit `type Name struct { ... }`. Jedes Feld besteht aus Name und Typ; Feldnamen müssen mit Großbuchstaben beginnen, um von anderen Paketen zugänglich zu sein, die sogenannten 'exportierten Bezeichner'. Das Tool konvertiert automatisch JSON-Feldnamen zu PascalCase-exportierten Feldnamen, z.B. `user_name` wird zu `UserName` gemappt, mit ursprünglichem Schlüssel im json-Tag beibehalten.

Die Kernkonvertierung dieses Tools wird vom Browser-internen jsonFormat-Web Worker durchgeführt, der den Go-Renderer von quicktype-core mit Optionen `just-types` und `no-comments` aufruft. Der gesamte Fluss hängt nicht von Backend-Diensten ab: Eingabe-JSON wird lokal geparst, Typen erkannt, Go-Code generiert, schließlich im rechten Editor präsentiert.

Typerkennung folgt konventionellem JSON-zu-Go-Mapping: Strings werden zu `string`, Booleans zu `bool`, Ganzzahlen zu `int64`, Gleitkommazahlen zu `float64`, Arrays zu Slices `[]T`, Objekte zu unabhängigen Structs, `null` zu `interface{}`. Verschachtelte Objekte werden rekursiv verarbeitet, klare Hierarchie beibehalten.

Im Vergleich zum manuellen Schreiben ist toolgenerierter Code ein 'lauffähiger erster Entwurf'. Entwickler müssen normalerweise nur Root-Typnamen, Paketnamen, Feldtyppräzision (z.B. int64 zu int) und ob Zeigertypen verwendet werden, anpassen, bevor sie in echte Go-Projekte platziert werden. Kombiniert mit Ein-Klick-Kopie und model.go-Download wird repetitive Arbeit in Integrations- und Modellierungsphasen erheblich reduziert.

Anwendungsfälle

  • Go-Backend-Entwicklung konvertiert REST-API-Antwort-JSON zu Struct, bindet direkt an Gin/Echo/Fiber-Handler-Parameter mit json.Unmarshal
  • Bei Frontend-Backend-Integration Beispielantwort-JSON aus Postman übernehmen, schnell Go-Modell generieren, um manuelle Feldeingabe zu reduzieren
  • Bei Integration von Drittanbieter-Webhook-Callbacks Payload-JSON zu Go-struct konvertieren für praktischen Feldzugriff und Validierung
  • Konvertiert JSON-Konfigurationsdateien aus Viper/Consul/Nacos zu Go-Typen, ersetzt schwach typisierten map[string]interface{}-Zugriff
  • Microservice-Teams vereinheitlichen Anfrage-/Antwortstruktur für gRPC/HTTP-Schnittstellen, konvertieren Beispiel-JSON zu gemeinsam genutzten Go-Typen
  • Testingenieure konvertieren JSON-Fixture zu Go-struct, verwenden mit testify für assertionsgetriebene Tests
  • DevOps analysieren von ELK/Fluentd gesammelte JSON-Logzeilen, generieren Struct für strukturierte Analyse mit Go-Programmen
  • Nachdem Crawler JSON-Daten extrahiert haben, zu Go-struct konvertieren, mit gorm/gen oder ent arbeiten, um Datenbankmodelle zu generieren
  • Von IoT-Geräten gemeldete JSON-Telemetriedaten zu Go-struct konvertieren, Deserialisierung und Filterung in Edge-Gateway-Programmen
  • Konvertiert von Kafka/NATS/RabbitMQ konsumierte JSON-Nachrichten zu Go-Typen, für ereignisgesteuerte Consumer-Implementierung
  • SDK-Entwickler konvertieren Server-Beispielantwort-JSON zu Go-struct, schreiben in types-Paket der Client-Bibliothek zur Benutzerreferenz
  • Konvertiert Beispiel-JSON aus Swagger/OpenAPI-Dokumentation zu Go-struct als Schnittstellendokumentation-Codebeispiele
  • Studenten oder Dozenten konvertieren Beispiel-JSON zu Struct während Go-Kursen, demonstrieren Go-Typsystem und json-Tag-Verwendung
  • Datenmigrationsskripte konvertieren aus MySQL/PostgreSQL exportierte JSON-Zeilen zu Go-struct, für Feldzuordnung und Typvalidierung
  • CI/CD-Konfigurations-JSON zu Go-struct konvertieren, praktisch stark typisierte Konfigurationslesung in in Go geschriebenen Pipeline-Tools
  • Legacy-Projekte refaktorieren dynamischen map-basierten JSON-Lesecode zu stark typisiertem struct-basiertem Zugriff

Anleitung

  1. Fügen Sie JSON-Inhalt im linken Editor ein, oder ziehen Sie .json/.txt-Dateien per Drag & Drop, oder klicken Sie auf 'Beispiel', um integrierte Daten zu laden.
  2. Warten Sie ca. 400ms, das Tool konvertiert automatisch und zeigt generierten Go-struct-Code rechts an.
  3. Wenn JSON Fehler hat, klicken Sie auf Schaltfläche 'JSON reparieren', um häufige Formatfehler automatisch zu beheben, dann Generierung fortsetzen.
  4. Überprüfen Sie rechte Ausgabe, klicken Sie auf 'Kopieren', um in Go-Projekt einzufügen, oder klicken Sie auf 'Herunterladen', um als model.go-Datei zu speichern.

Funktionen

  • Browser-lokale Go-struct-Generierung: JSON-Parsing und Go-Code-Generierung im Browser abgeschlossen, Rohdaten nicht auf Server hochgeladen
  • 400ms debounced Autokonvertierung: Kein manueller Klick nach Einfügen oder Ändern erforderlich, kopierbarer Go-Code wird in Echtzeit rechts ausgegeben
  • Intelligente Typerkennung: Strings werden zu string, Booleans zu bool, Ganzzahlen zu int64, Gleitkommazahlen zu float64, Arrays zu Slices, Objekte zu Structs
  • Verschachtelte Objekte automatisch erweitern: Rekursiv unabhängige Struct-Typen generieren, klare JSON-Hierarchie beibehalten
  • Automatisch generierte json-Tags: Felder erhalten `json:"original_feldname"`-Tags, bereit zur Verwendung mit encoding/json
  • Ein-Klick-JSON-Fehlerbehebung: Behandelt automatisch abschließende Kommas, einfache Anführungszeichen, fehlende Anführungszeichen und andere häufige Formatfehler, setzt Generierung nach Reparatur fort
  • Unterstützt Einfügen/Hochladen/Beispiel-Eingabe: Drag & Drop von .json/.txt-Dateien oder Laden integrierter chinesischer Beispiele
  • Ein-Klick-Kopieren und -Herunterladen: Gesamten Go-Code in Zwischenablage kopieren oder als model.go-Datei direkt in Projekt herunterladen
  • localStorage-Eingabeverlauf: Speichert automatisch letzte Eingaben, schnelle Wiederherstellung nach Aktualisierung oder versehentlichem Schließen der Seite
  • Responsiver Split-Screen-Editor: Einstellbare linke/rechte Panel-Breite, komfortable Eingabe-/Ausgabe-Ansicht auf Desktop und Mobil

Codebeispiele

JSON mit generiertem Struct deserialisieren

go

Nachdem Sie generiertes Struct in Projekt kopiert haben, deserialisieren Sie API-Antwort direkt mit encoding/json.

package main

import (
    "encoding/json"
    "fmt"
)

// Von GeekFormat-Tool JSON zu Go generierter Code
type User struct {
    ID      int64    `json:"id"`
    Name    string   `json:"name"`
    Tags    []string `json:"tags"`
    Address Address  `json:"address"`
}

type Address struct {
    City string `json:"city"`
}

func main() {
    data := []byte(`{
        "id": 1,
        "name": "Alice",
        "tags": ["admin", "dev"],
        "address": {"city": "Beijing"}
    }`)

    var u User
    if err := json.Unmarshal(data, &u); err != nil {
        panic(err)
    }

    fmt.Println(u.Name, u.Address.City)
}

JSON mit potenziell fehlenden Feldern verarbeiten

go

Wenn bestimmte API-Felder möglicherweise nicht existieren, ändern Sie entsprechende Felder zu Zeigertypen oder verwenden Sie mit omitempty-Tag.

package main

import "encoding/json"

// Felder manuell zu Zeigern ändern; wenn fehlend, Wert ist nil
type User struct {
    ID      *int64  `json:"id,omitempty"`
    Name    *string `json:"name,omitempty"`
    Email   *string `json:"email,omitempty"`
}

func main() {
    data := []byte(`{"id": 1, "name": "Bob"}`)
    var u User
    json.Unmarshal(data, &u)
    if u.Email == nil {
        println("E-Mail-Feld fehlt")
    }
}

Häufig gestellte Fragen

Wie konvertiert man JSON zu Go-struct?

Fügen Sie JSON-Inhalt in das linke Eingabefeld ein, das Tool konvertiert automatisch innerhalb von 400ms und zeigt das generierte Go-struct rechts an. Sie können auch .json/.txt-Dateien per Drag & Drop hochladen oder auf 'Beispiel' klicken, um integrierte Daten zu laden. Nach der Konvertierung können Sie die model.go-Datei in einem Klick kopieren oder herunterladen.

Enthält der generierte Go-Code json-Tags?

Ja. Das Tool generiert Go-Code basierend auf quicktype-core, und standardmäßig erhält jedes Struct-Feld ein `json:"original_feldname"`-Tag, praktisch für direkte Serialisierung und Deserialisierung mit Unmarshal/Marshal von encoding/json.

Werden JSON-Arrays zu Go-Slices konvertiert?

Ja. JSON-Arrays generieren entsprechende Slice-Typen basierend auf Elementtypen, z.B. `["a","b"]` generiert `[]string`, `[1,2,3]` generiert `[]int64`, `[{...},{...}]` generiert benutzerdefinierte Typen wie `[]UserItem`.

Generieren verschachtelte Objekte mehrere Structs?

Ja. Jedes verschachtelte Objekt generiert rekursiv einen unabhängigen Struct-Typ, benannt in PascalCase. Zum Beispiel generiert das `address`-Objekt ein `Address`-Struct, referenziert im Hauptstruct über das `Address Address`-Feld.

Welchen Typ generieren null-Werte?

null-Werte in JSON werden normalerweise als `interface{}` erkannt, was der sichere Fallback-Typ ist. Wenn Sie den tatsächlichen Typ des Felds kennen, können Sie einen Beispielwert in JSON hinzufügen, neu generieren und dann manuell zum spezifischen Typ anpassen.

Kann ich den Namen des Root-Structs anpassen?

Ja. Das Tool verwendet standardmäßig Root-Typnamen (wie User); nach Ändern des Root-Typnamens in den Einstellungen werden alle zugehörigen Subtyp-Namen synchron aktualisiert, der heruntergeladene Dateiname ändert sich entsprechend.

Was tun, wenn JSON Formatfehler hat?

Das Tool erkennt automatisch die JSON-Gültigkeit. Wenn häufige Fehler wie abschließende Kommas, einfache Anführungszeichen, fehlende Anführungszeichen vorliegen, erscheint eine Schaltfläche 'JSON reparieren'. Beim Klicken versucht das Tool automatische Reparatur und regeneriert Go-struct; bei fehlgeschlagener Reparatur wird die genaue Fehlerposition angegeben.

Werden Daten auf den Server hochgeladen? Ist es privat und sicher?

Nein. Alle JSON-Parsing, Typerkennung und Go-Code-Generierung werden in Ihrem Browser über Web Worker abgeschlossen; eingegebene Inhalte und generierter Code werden niemals auf einen Server hochgeladen oder in der Cloud aufgezeichnet. Sensibles JSON mit API-Schlüsseln, Tokens oder Geschäftsdaten kann sicher verwendet werden.

Kann der generierte Code direkt in Go-Projekte platziert werden?

Ja. Generierter Code ist Standard-Go-struct mit json-Tags, kann direkt in das types/- oder models/-Verzeichnis des Projekts kopiert werden. Wir empfehlen, Typnamen und Paketnamen gemäß den Namenskonventionen des Projekts anzupassen.

Ist dieses Tool kostenlos? Muss ich mich registrieren?

Völlig kostenlos, keine Registrierung oder Anmeldung erforderlich. Seite öffnen und sofort verwenden, keine Funktionsbeschränkungen, Wasserzeichen oder erzwungene Anmeldung.

Welche Größe von JSON-Dateien wird unterstützt?

Das Tool hat keine strenge Dateigrößenbeschränkung, aber Konvertierungsgeschwindigkeit und Renderingleistung hängen von Browser- und Geräteleistung ab. Wir empfehlen, JSON innerhalb von 1MB für beste Erfahrung zu verarbeiten; für übergroßes JSON zuerst mit JSON-Formatter oder Split-Tool verarbeiten.

Werden numerische Typen einheitlich float64 generieren?

Nein. Das Tool unterscheidet Ganzzahlen und Gleitkommazahlen: Ganzzahlfelder generieren int64, Gleitkommafelder generieren float64. Wenn Sie spezifischere Typen wie int, uint64 bevorzugen, nach Generierung manuell ersetzen.

Fehlerbehebung

Rechts wird 'Bitte JSON-Daten eingeben' angezeigt

Linkes Eingabefeld ist leer oder enthält nur Leerzeichen. Bitte fügen Sie gültiges JSON ein, oder klicken Sie auf 'Beispiel', um Daten zu laden, oder ziehen Sie .json/.txt-Dateien per Drag & Drop.

Zeigt JSON-Parsing-Fehler an, kann aber Fehlerposition nicht finden

Klicken Sie auf Schaltfläche 'JSON reparieren' unter dem Eingabefeld; Tool versucht automatisch, abschließende Kommas, einfache Anführungszeichen, fehlende Anführungszeichen, JS-Stil-Objekte und andere Probleme zu beheben. Geändertes Ergebnis wird nach Reparatur hervorgehoben.

Generierte Feldnamen entsprechen nicht Go-Namenskonventionen

Tool generiert PascalCase-Feldnamen aus JSON-Schlüsseln. Wenn Schlüssel Chinesisch oder Sonderzeichen enthalten, können escapte Feldnamen generiert werden. Wir empfehlen, JSON-Schlüssel in kleines Englisch oder snake_case zu ändern, dann nach Generierung einheitlich anzupassen.

null-Feld generiert interface{}, möchte zu spezifischem Typ ändern

Da null keinen spezifischen Typ erkennen kann, verwendet Tool interface{} als Fallback. Sie können diesem Feld einen Beispielwert (wie "" oder 0) im Quell-JSON geben, neu generieren und dann Typ zum tatsächlichen Typ wie string/int64 ändern.

Seite ruckelt nach Konvertierung von großem JSON

Browser-Rendering von übergroßem JSON und großen Mengen von Structs verbraucht viel Arbeitsspeicher. Empfehlungen: ① Nur Schlüsselfelder im Beispiel-JSON behalten; ② In mehrere Objekte aufteilen und separat konvertieren; ③ Andere speicherintensive Tabs im Browser schließen.

Array-Elementtyp als []interface{} erkannt

Wenn Array leer [] ist oder Elementtypen inkonsistent sind, verwendet Tool interface{} als Fallback. Sie können Beispielelemente gleichen Typs hinzufügen oder Typ nach Generierung manuell zu spezifischen Slice-Typen wie []string, []int64 ändern.

Glossar

struct
Zusammengesetzter Datentyp von Go, der verwendet wird, um mehrere Felder zu einem Typ zu kombinieren. Der Hauptteil des von diesem Tool generierten Go-Codes besteht aus mehreren Struct-Definitionen.
slice
Dynamischer Array-Typ von Go, Syntax []T. Dieses Tool mappt JSON-Arrays zu entsprechenden Slices, z.B. []string, []int64, []UserItem.
json tag
Zeichenkette zwischen Backticks nach Go-struct-Feld, z.B. `json:"user_name"`, verwendet zur Angabe des Feldnamens während encoding/json-Serialisierung/Deserialisierung. Dieses Tool generiert dieses Tag automatisch.
interface{}
Leerer Interface-Typ von Go, kann jeden Wert darstellen. Dieses Tool verwendet interface{} als sicheren Fallback bei JSON-null oder unbestimmtem Typ.
PascalCase
Namensstil, bei dem jedes Wort mit Großbuchstaben beginnt, z.B. UserName, AddressCity. Go erfordert, dass exportierte Felder mit Großbuchstaben beginnen, daher konvertiert dieses Tool JSON-Feldnamen automatisch zu PascalCase.
encoding/json
JSON-Codierungs-/Decodierungspaket in Gos Standardbibliothek. Nachdem von diesem Tool generierte Structs mit json-Tags gepaart sind, können json.Unmarshal und json.Marshal direkt verwendet werden.
unmarshal
Prozess des Parsens eines JSON-Byte-Stroms zu einem Go-Wert. Nach Generieren des Structs ist die häufigste Verwendung das Aufrufen von json.Unmarshal(data, &user).
omitempty
Häufige Option für Gos json-Tag, z.B. `json:"name,omitempty"`, bedeutet Ausgabe weglassen, wenn Feld Nullwert ist. Dieses Tool generiert standardmäßig kein omitempty; nach Generierung bei Bedarf manuell hinzufügen.

JSON-Typ zu Go-Typ-Mapping-Spickzettel

Dieses Tool erkennt automatisch entsprechende Go-Typen basierend auf JSON-Werttyp; häufige Mappings sind wie folgt:

JSON-Wert-BeispielGenerierter Go-TypHinweis
"hello"stringDirekte String-Zuordnung
true / falseboolBoolescher Wert
42int64Zahl ohne Dezimalpunkt
3.14float64Zahl mit Dezimalpunkt
nullinterface{}Sicherer Fallback, wenn spezifischer Typ nicht erkannt werden kann
["a","b"][]stringString-Array
[1,2,3][]int64Ganzzahl-Array
[{...},{...}][]UserItemObjekt-Array, Elementtypen rekursiv generiert
{"id":1}UserObjekt generiert unabhängiges Struct

Empfehlungen zur Auswahl gängiger numerischer Typen in Go

Tool verwendet standardmäßig int64 und float64; passen Sie in echten Projekten nach Bedarf an:

SzenarioEmpfohlener TypGrund
Allgemeine Ganzzahl-IDs, Zählungenint64Übereinstimmend mit Tool-Standard, kompatibel mit den meisten JSON-Zahlen
Datenbank-Autoinkrement-PK als positiv bekanntuint64Vermeidet negative Zahlen, klarere Semantik
32-Bit-Systeme oder explizite kleine Ganzzahlenint32Reduziert Speicherverbrauch
Preise, Koordinaten, wissenschaftliches Rechnenfloat64Übereinstimmend mit Tool-Standard, Standard-Gleitkommagenauigkeit
Präzise Währungsberechnungdecimal.Decimal / intfloat64 hat Genauigkeitsrisiko; empfehle shopspring/decimal oder int in Cent-Einheit

Privacy & Security

Alle Verarbeitungen dieses JSON-zu-Go-Tools werden vollständig lokal in Ihrem Browser abgeschlossen: JSON-Parsing, Typerkennung, Go-Code-Generierung werden alle clientseitig über Web Worker ausgeführt; eingegebene JSON-Inhalte, hochgeladene Dateien und generierter Go-Code werden niemals auf einen Server hochgeladen, noch in der Cloud aufgezeichnet, zwischengespeichert oder gespeichert. Nach Schließen oder Aktualisieren der Seite werden alle Ein- und Ausgaben automatisch aus dem Speicher gelöscht, nur localStorage behält Ihren letzten Eingabeverlauf (kann jederzeit gelöscht werden). Geeignet zur Verarbeitung von JSON mit API-Schlüsseln, Tokens, sensiblen Geschäftsdaten.