Heim >Backend-Entwicklung >Golang >Wie deserialisiere ich JSON mit dynamischen Namen in verschachtelten Strukturen in Go?
Dekodierung verschachtelter dynamischer Strukturen in JSON mit Go
Dieser Artikel befasst sich mit der Herausforderung der Deserialisierung von JSON-Daten, die dynamische Namen innerhalb verschachtelter Strukturen enthalten. Lassen Sie uns das Problem untersuchen und eine Lösung anbieten.
Problemerklärung
Betrachten Sie die folgende JSON-Antwort:
{ "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 }
Struktur:
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"` }
Das Problem entsteht durch die dynamischen Telefonnummern als Eigenschaftsnamen innerhalb der „SMS“ Objekt.
Lösung
Um diese Situation zu bewältigen, können wir eine Karte verwenden, um das „sms“-Objekt in JSON darzustellen:
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"` }
Der Deserialisierungscode sieht nun so aus:
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) }
Dieser Ansatz ermöglicht es uns, verschachtelte dynamische Strukturen korrekt zu verarbeiten Los.
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit dynamischen Namen in verschachtelten Strukturen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!