Menyahmarshall JSON kepada Tatasusunan Objek dalam Go
Menghuraikan data JSON ke dalam struktur Go tersuai adalah penting untuk banyak tugas pengaturcaraan. Soalan ini meneroka cara menghuraikan JSON ke dalam tatasusunan objek dalam Go.
Masalahnya
Data JSON yang disediakan dalam soalan mempamerkan format tertentu, di mana setiap kunci mewakili pengecam unik, dan nilai yang sepadan ialah objek bersarang yang mengandungi beberapa atribut. Matlamatnya adalah untuk menyahmarshal data JSON ini ke dalam tatasusunan struct, di mana setiap elemen dalam tatasusunan mewakili salah satu objek bersarang dalam JSON.
Coretan kod yang disediakan dalam soalan cuba menghuraikan JSON ke dalam Struktur MonsterCollection, yang mengandungi peta rentetan kepada struct Monster. Walau bagaimanapun, pengkompil melaporkan ralat operasi yang tidak sah kerana jenis tidak sepadan.
Penyelesaian
Isu utama dengan coretan kod ialah ia menyahmarshal JSON ke dalam antara muka jenis {}, yang membenarkan penaipan dinamik tetapi mempunyai kefungsian terhad. Untuk mengakses medan khusus dalam objek bersarang, pembolehubah v dalam gelung perlu ditegaskan jenis kepada jenis yang betul.
Selain itu, kod cuba memasukkan objek Monster ke dalam peta dengan kekunci integer. Walau bagaimanapun, peta Pool ialah peta rentetan kepada struct Monster, jadi kekuncinya mestilah rentetan.
Kod berikut menunjukkan cara untuk menyahmarshal JSON dengan betul ke dalam tatasusunan struct Monster:
type Monster struct { MonsterId int32 `json:"monster-id"` Level int32 `json:"level"` SkillLevel int32 `json:"skill-level"` AimerId int32 `json:"aimer-id"` } type MonsterCollection struct { Pool map[string]Monster } func (mc *MonsterCollection) FromJson(jsonStr string) error { var data map[string]Monster b := []byte(jsonStr) err := json.Unmarshal(b, &data) if err != nil { return err } mc.Pool = data return nil }
Dalam kod ini:
Kini, data JSON boleh dibongkar ke dalam struktur MonsterCollection dan diakses melalui peta Pool, yang menyediakan cara mudah untuk mendapatkan semula raksasa individu menggunakan pengecam unik mereka.
Atas ialah kandungan terperinci Bagaimana untuk Unmarshal JSON menjadi Array Objek dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!