Menyahkod Tatasusunan dengan Jenis Campuran dalam JSON
Apabila berurusan dengan tatasusunan JSON yang mengandungi nilai pelbagai jenis, adalah penting untuk mempertimbangkan cara untuk menyahmarshal mereka ke dalam program Go dengan berkesan. Tatasusunan Go memerlukan jenis yang ditakrifkan secara eksplisit, yang menimbulkan cabaran apabila mengendalikan jenis nilai yang berbeza-beza.
Penyelesaian: Menggunakan antara muka{}
Penyelesaian terletak pada penggunaan antara muka{} , jenis khas dalam Go yang boleh menyimpan nilai apa-apa jenis. Dengan menggunakan tatasusunan{} antara muka, kami membenarkan fleksibiliti menyimpan nilai jenis yang berbeza dalam tatasusunan yang sama.
Contoh Pelaksanaan
Pertimbangkan contoh JSON berikut:
{"key": ["NewYork", 123]}
Untuk menyahmarshal JSON ini menggunakan antara muka{}, kami boleh mentakrifkan data tersuai struktur:
type UntypedJson map[string][]interface{}
Jenis ini mewakili peta daripada rentetan kepada tatasusunan antara muka{}, membenarkan kemungkinan untuk menyimpan nilai apa-apa jenis.
Menyahmarshall JSON
Untuk menyahmarshal JSON, kita boleh menggunakan json.Unmarshal fungsi:
var ut UntypedJson json.Unmarshal([]byte(jsonString), &ut)
Pembolehubah ut kini akan mengandungi data yang tidak dimarshall sebagai jenis UntypedJson. Kekunci peta sepadan dengan kekunci objek JSON dan nilai tatasusunan memegang nilai jenis yang berbeza.
Contoh Taman Permainan
Contoh lengkap dengan taman permainan Go terbenam boleh ditemui di sini:
const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahkod Tatasusunan JSON dengan Jenis Data Campuran dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!