Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahseri JSON dengan Nama Dinamik dalam Struktur Bersarang dalam Go?
Menyahkod Struktur Dinamik Bersarang dalam JSON dengan Go
Artikel ini menangani cabaran untuk menyahsiri data JSON yang menampilkan nama dinamik dalam struktur bersarang. Mari kita periksa masalah dan sediakan penyelesaian.
Pernyataan Masalah
Pertimbangkan respons JSON berikut:
{ "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 }
struct:
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"` }
Isu ini timbul kerana nombor telefon dinamik sebagai nama harta dalam "sms" objek.
Penyelesaian
Untuk mengendalikan situasi ini, kita boleh menggunakan peta untuk mewakili objek "sms" dalam JSON:
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"` }
Kini, kod penyahserialisasian kelihatan seperti ini:
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) }
Pendekatan ini membolehkan kami memproses dinamik bersarang dengan betul struktur dalam Go.
Atas ialah kandungan terperinci Bagaimana untuk Menyahseri JSON dengan Nama Dinamik dalam Struktur Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!