Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengendalikan Kunci JSON Arbitrari dalam Go Structs?
Mengendalikan Kekunci JSON Arbitrari dalam Go Structs
Respons JSON anda mengandungi pelbagai kekunci yang tidak boleh ditakrifkan secara statik dalam struct Go. Untuk menangani perkara ini, pertimbangkan untuk menggunakan struktur data peta yang membenarkan pasangan nilai kunci dinamik.
Menggunakan Peta untuk Kekunci Dinamik
Kod berikut mentakrifkan struct yang menggunakan peta untuk mewakili pasangan nilai kunci arbitrari:
type Items map[string][]ImageUrl
Di sini, Item ialah peta yang memetakan rentetan (kunci dalam JSON) kepada kepingan struktur ImageUrl. Setiap struct ImageUrl mewakili satu URL imej dengan dimensinya.
Penggunaan Contoh
Versi kod anda yang diubah suai ini menggambarkan cara menggunakan struct Item:
type ImageUrl struct { Url string Width, Height int } type Items map[string][]ImageUrl func main() { json := `{"items": [{"name": "thing", "image_urls": { "50x100": [{ "url": "http://site.com/images/1/50x100.jpg", "width": 50, "height": 100 }, { "url": "http://site.com/images/2/50x100.jpg", "width": 50, "height": 100 }], "200x300": [{ "url": "http://site.com/images/1/200x300.jpg", "width": 200, "height": 300 }], "400x520": [{ "url": "http://site.com/images/1/400x520.jpg", "width": 400, "height": 520 }] } } }` var items Items if err := json.Unmarshal([]byte(json), &items); err != nil { // Handle error } fmt.Println(items) // Prints the map containing the keys and values }
Dalam contoh ini, fungsi json.Unmarshal akan mengisi secara automatik peta Item dengan yang sesuai pasangan kunci-nilai. Anda kemudiannya boleh mengakses dan memanipulasi data seperti yang diperlukan.
Nota: Pendekatan ini menganggap bahawa kunci bersarang dalam JSON anda adalah konsisten. Jika tidak demikian, anda mungkin perlu menggunakan struktur data yang lebih kompleks, seperti peta bersarang atau kepingan peta.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Kunci JSON Arbitrari dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!