Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghuraikan Data JSON dengan Struktur Dinamik Bersarang dalam Go?
Go Decoding of JSON Nested Dynamic Structure
Perbincangan ini meneroka cabaran menghuraikan data JSON dengan struktur dinamik bersarang dalam Pergi.
Masalah:
Sampel data JSON mengandungi struktur bersarang dengan kunci dinamik, seperti nombor telefon, seperti yang dilihat di bawah:
{ "status": "OK", "status_code": 100, "sms": { "79607891234": { "status": "ERROR", "status_code": 203, "status_text": "Нет текста сообщения" }, "79035671233": {...}, "79105432212": {...} }, "balance": 2676.18 }
Kod sampel yang disediakan cuba menggunakan senarai nombor telefon tetap untuk memodelkan struktur bersarang, tetapi pendekatan ini gagal kerana sifat dinamik nombor telefon kekunci.
Penyelesaian:
Untuk mengendalikan struktur dinamik bersarang, seseorang harus menggunakan peta dan bukannya senarai tetap untuk memodelkan data. Untuk contoh ini, struktur data berikut boleh digunakan:
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"` }
Dalam struktur yang dikemas kini ini, map[string]SMSPhone digunakan untuk mewakili objek "sms" bersarang, di mana kekunci peta sepadan dengan dinamik nombor telefon.
Untuk menyahmarshal data JSON ke dalam struktur ini, kod berikut boleh digunakan:
var result SMSSendJSON if err := json.Unmarshal([]byte(src), &result); err != nil { panic(err) } fmt.Printf("%+v", result)
Hasilnya akan menjadi struct Go dengan peta yang mengandungi data nombor telefon dinamik bersarang.
Soalan berkaitan yang mempamerkan penggunaan peta untuk struktur dinamik dalam Go termasuk:
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Data JSON dengan Struktur Dinamik Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!