Dekodierung verschachtelter dynamischer JSON-Strukturen in Go
In Go kann die Deserialisierung von JSON-Daten mit verschachtelten dynamischen Strukturen eine Herausforderung sein. Eine aktuelle Abfrage veranschaulicht dieses Problem:
{ "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 }
Um solche Daten zu deserialisieren, müssen wir eine Karte verwenden, um die dynamische Liste der SMS-Status zu modellieren. Hier ist der geänderte Code:
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"` }
Jetzt Unmarshaling der JSON-Daten mit dieser geänderten Struktur:
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) } fmt.Printf("% v", result)
Deserialisiert die dynamischen verschachtelten Strukturen korrekt, was zu Folgendem führt:
{Status:OK StatusCode:100 Sms:map[79035671233:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79105432212:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79607891234:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения}] Balance:2676.18}
Die Schlüssel in Die result.Sms-Karte entspricht den dynamischen Telefonnummern und ihre Werte sind die jeweiligen SMS-Status.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3