Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengendalikan Pelbagai Jenis Nilai JSON Apabila Menyahmarshaling dalam Go?
Menyahmarshaling JSON dengan Pelbagai Jenis Nilai dalam Go
Dalam Go, JSON unmarshaling biasanya melibatkan pemetaan data JSON ke struct yang sepadan. Walau bagaimanapun, kesukaran timbul apabila struktur data boleh berbeza-beza, mempersembahkan nilai kunci sebagai tatasusunan objek atau rentetan.
Masalah:
API menyampaikan struktur data yang tidak konsisten, mengakibatkan dalam variasi nilai berpotensi untuk kunci: objek sebaris atau rujukan kepada objek (/obj1/is/at/this/path).
Penyelesaian:
Untuk mengendalikan kebolehubahan ini, pertimbangkan teknik berikut:
1. Nyahmarshal kepada Jenis Antara Muka:
Nyah marshal data JSON kepada struct yang mengandungi medan dengan jenis []antara muka{}. Ini akan membenarkan kedua-dua rentetan (dinyahkodkan sebagai rentetan) dan objek (dinyahkodkan sebagai peta[rentetan]antara muka{}) disimpan dalam tatasusunan.
Sampel Kod:
type Data struct { MyKey []interface{} `json:"mykey"` }
2. Penukaran Jenis untuk Pembezaan:
Setelah data dibuka, gunakan suis jenis untuk membezakan antara rentetan dan objek.
Sampel Kod:
for i, v := range data.MyKey { switch x := v.(type) { case string: fmt.Println("Got a string: ", x) case map[string]interface{}: fmt.Printf("Got an object: %#v\n", x) } }
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pelbagai Jenis Nilai JSON Apabila Menyahmarshaling dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!