Menyahmarshaling Data JSON dalam Format Tidak Diketahui
Apabila berhadapan dengan data JSON yang mempunyai struktur yang tidak dapat diramalkan dan kunci berubah-ubah, ia memberikan cabaran unmarshaling ia ke dalam struktur Go. Artikel ini membincangkan cara mengendalikan senario sedemikian dengan cekap.
Penyelesaian
Untuk menangani isu ini, terdapat dua pendekatan yang disyorkan:
Pendekatan 1: Menggunakan Peta
Apabila kekunci tidak diketahui, menggunakan pemboleh ubah peta[rentetan]antara muka{} ialah pilihan yang sesuai untuk menyahmarshaling muatan JSON.
var grades map[string]interface{} err := json.Unmarshal([]byte(jsonString), &grades)
Di sini, pembolehubah peta "gred" akan mengandungi data yang tidak dikawal, dengan kekunci mewakili nama subjek yang tidak diketahui, dan nilai ialah peta yang terdiri daripada nama pelajar dan grednya.
Pendekatan 2: Mengabaikan Kekunci Tidak Diketahui dengan Tag JSON
Jika struct diutamakan, ia boleh diberi anotasi dengan tag json:"-" untuk mengabaikan medan tertentu semasa JSON marshaling dan unmarshaling. Ini membolehkan struct menyimpan data yang tidak dimarshallkan sambil mengecualikan kekunci yang tidak diketahui.
type GradeData struct { Grades map[string]interface{} `json:"-"` } var gradesData GradeData err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)
Dalam kes ini, struct "GradeData" mengandungi hanya medan "Gred", yang merupakan peta nama subjek dan pelajar gred, tetapi nama kunci asal daripada JSON tidak ada. Teg JSON memastikan bahawa medan struct sejajar dengan format output yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Membongkar Struktur JSON Tidak Dijangka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!