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!