Heim >Backend-Entwicklung >Golang >Wie entmarshaliere ich JSON mit unbekannten Feldnamen in Go mithilfe einer Karte?
Unmarshaling von JSON mit unbekannten Feldnamen mithilfe einer Karte
Unmarshaling von JSON mit unbekannten Feldnamen stellt eine Herausforderung dar, insbesondere wenn die Objektstruktur konsistent bleibt. Diese Frage befasst sich mit der Handhabung solcher Szenarien und bietet eine Lösung mithilfe einer Golang-Karte.
Problem:
Die bereitgestellte JSON-Antwort einer POST-Anfrage enthält ein Feld mit einem unbekannter Name. Das Ziel besteht darin, diesen JSON in eine Struktur zu entmarshalieren und gleichzeitig die konsistente Struktur der bekannten Felder beizubehalten.
Lösung:
Schritt 1: Erstellen Sie eine Struktur für die bekannten Felder
Definieren Sie eine Struktur namens mData, die die konsistenten Felder im darstellt JSON:
type mData struct { KnownField1 [][5]int `json:"known_field_1"` KnownField2 [][5]int `json:"known_field_2"` KnownField3 [][5]int `json:"known_field_3"` }
Schritt 2: Verwenden Sie eine Karte, um unbekannte Feldnamen zu verarbeiten
Erstellen Sie eine Karte mit dem Namen „Daten“, um den unbekannten Feldnamen als Schlüssel und Instanz von zu speichern mData als Wert:
var data map[string]mData
Schritt 3: Entmarshalieren Sie den JSON in den Karte
Verwenden Sie json.Unmarshal, um den JSON-Körper an die Karte zu binden:
if err := json.Unmarshal(body, &data); err != nil { panic(err) }
Schritt 4: Ergebnisse drucken
Die Karte enthält nun den unbekannten Feldnamen und die zugehörige mData-Instanz. Sie können mit dem folgenden Code auf die Werte zugreifen:
for k, v := range data { fmt.Println(k, v) }
Mit diesem Ansatz können Sie JSON mit unbekannten Feldnamen entmarshalieren und gleichzeitig die Struktur der bekannten Felder beibehalten. Die Ausgabe des bereitgestellten Codes lautet:
unknown_field [[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]]
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON mit unbekannten Feldnamen in Go mithilfe einer Karte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!