Heim > Artikel > Backend-Entwicklung > Wie dekodiere ich JSON mit dynamisch verschachtelten Strukturen in Golang?
JSON Nested Dynamic Structures Go Decoding
Bei der Arbeit mit JSON-Daten, die dynamische oder unbekannte Feldnamen innerhalb verschachtelter Strukturen enthalten, kommt es häufig zu Begegnungen. Dies kann eine Herausforderung darstellen, wenn versucht wird, die Daten genau zu deserialisieren und zu verarbeiten.
Beispieldaten
Berücksichtigen Sie die folgenden JSON-Daten, die nach einer Serveranfrage empfangen wurden:
{ "status": "OK", "status_code": 100, "sms": { "79607891234": { "status": "ERROR", "status_code": 203, "status_text": "Нет текста сообщения" }, "79035671233": { "status": "ERROR", "status_code": 203, "status_text": "Нет текста сообщения" }, "79105432212": { "status": "ERROR", "status_code": 203, "status_text": "Нет текста сообщения" } }, "balance": 2676.18 }
Benutzerdefinierte Typdefinitionen
Um diese dynamische Struktur zu handhaben, benutzerdefiniert Typdefinitionen können verwendet werden:
type SMSPhone struct { Status string `json:"status"` StatusCode int `json:"status_code"` StatusText string `json:"status_text"` } type SMSSendJSON struct { Status string `json:"status"` StatusCode int `json:"status_code"` Sms []SMSPhone `json:"sms"` Balance float64 `json:"balance"` }
Verwendung von Karten
Da das SMS-Objekt im JSON über dynamische Schlüssel verfügt, kann es mithilfe einer Karte mit dem Telefon modelliert werden Zahlen als Schlüssel und die SMSPhone-Struktur als Werte:
type SMSPhone struct { Status string `json:"status"` StatusCode int `json:"status_code"` StatusText string `json:"status_text"` } type SMSSendJSON struct { Status string `json:"status"` StatusCode int `json:"status_code"` Sms map[string]SMSPhone `json:"sms"` Balance float64 `json:"balance"` }
Unmarshaling
Wenn die benutzerdefinierten Typen definiert sind, können die Daten wie folgt unmarshaled werden:
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) } fmt.Printf("%+v", result)
Das Ergebnis ist in einem ordnungsgemäß deserialisierten Objekt mit den dynamischen Telefonnummern als Schlüssel im Ergebnis.Sms Karte.
Verwandte Fragen
Das obige ist der detaillierte Inhalt vonWie dekodiere ich JSON mit dynamisch verschachtelten Strukturen in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!