JSON zu Go
Kein Inhalt
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
- 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.
- Warten Sie ca. 400ms, das Tool konvertiert automatisch und zeigt generierten Go-struct-Code rechts an.
- Wenn JSON Fehler hat, klicken Sie auf Schaltfläche 'JSON reparieren', um häufige Formatfehler automatisch zu beheben, dann Generierung fortsetzen.
- Ü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
goNachdem 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
goWenn 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-Beispiel | Generierter Go-Typ | Hinweis |
|---|---|---|
"hello" | string | Direkte String-Zuordnung |
true / false | bool | Boolescher Wert |
42 | int64 | Zahl ohne Dezimalpunkt |
3.14 | float64 | Zahl mit Dezimalpunkt |
null | interface{} | Sicherer Fallback, wenn spezifischer Typ nicht erkannt werden kann |
["a","b"] | []string | String-Array |
[1,2,3] | []int64 | Ganzzahl-Array |
[{...},{...}] | []UserItem | Objekt-Array, Elementtypen rekursiv generiert |
{"id":1} | User | Objekt 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:
| Szenario | Empfohlener Typ | Grund |
|---|---|---|
| Allgemeine Ganzzahl-IDs, Zählungen | int64 | Übereinstimmend mit Tool-Standard, kompatibel mit den meisten JSON-Zahlen |
| Datenbank-Autoinkrement-PK als positiv bekannt | uint64 | Vermeidet negative Zahlen, klarere Semantik |
| 32-Bit-Systeme oder explizite kleine Ganzzahlen | int32 | Reduziert Speicherverbrauch |
| Preise, Koordinaten, wissenschaftliches Rechnen | float64 | Übereinstimmend mit Tool-Standard, Standard-Gleitkommagenauigkeit |
| Präzise Währungsberechnung | decimal.Decimal / int | float64 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.
- JSON-Komprimierung
- CSV zu JSON
- JSON zu CSV
- JSON Diff
- JSON Escape / Unescape
- JSON Flatten
- JSON-Formatierung
- JSON-Generator
- JSONPath Online-Abfrage
- JSON zusammenführen
- JSON reparieren
- JSON Schema Validator
- JSON sortieren
- JSON Stringify
- JSON zu HTML-Tabelle
- JSON zu Java
- JSON zu Markdown
- JSON in SQL umwandeln
- JSON zu TOML
- JSON zu TypeScript
- XML zu JSON
- JSON zu XML
- YAML zu JSON
- JSON zu YAML
- JSON zu Python
- JSON zu Go
- JSON zu Rust
- JSON zu Swift
- JSON zu C#
- JSON zu C++
- JSON zu PHP