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.
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.
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.
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)
}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")
}
}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.
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.
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`.
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.
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.
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.
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.
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.
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.
Völlig kostenlos, keine Registrierung oder Anmeldung erforderlich. Seite öffnen und sofort verwenden, keine Funktionsbeschränkungen, Wasserzeichen oder erzwungene Anmeldung.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
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 |
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.