Menghuraikan JSON dalam Golang tanpa Menyahmarshaling Berlebihan
Apabila berurusan dengan data JSON yang mengandungi jenis mesej yang berbeza, unmarshaling terus ke dalam jenis struct yang diketahui mungkin tidak boleh dilaksanakan. Sebaliknya, proses dua langkah boleh digunakan untuk menyelesaikan isu ini.
Langkah 1: Unmarshal menjadi Peta Generik
Nyahmarshal objek JSON ke dalam peta generik[ string]antara muka{} untuk mendapatkan semula kunci dan nilai peringkat teratas.
Langkah 2: Kenal pasti dan Nyahmarshal Kunci Khusus
Lelaran melalui peta dan kenal pasti kunci yang sepadan dengan jenis mesej yang diingini. Contohnya:
switch k { case "ping": // ... case "ack": // ... }
Untuk setiap kunci yang dikenal pasti, nyahmarshal nilai yang sepadan ke dalam json.RawMessage dan bukannya antara muka{}:
var myAck json.RawMessage
Langkah 3: Nyahmarshal ke dalam Struktur Khusus
Akhir sekali, untuk menukar RawMessage kepada yang dikehendaki struct, unmarshal terus tanpa memerlukan proses marshal/unmarshal perantaraan:
err = json.Unmarshal(myAck, &myAck)
Dengan menyahmarshal sebahagiannya ke dalam RawMessage dan mengelakkan unmarshaling berlebihan, pendekatan ini memudahkan proses dan meningkatkan kecekapan apabila menghuraikan data JSON yang kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan JSON dengan Cekap dengan Pelbagai Jenis Mesej dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!