Menghuraikan Data JSON ke dalam Peta dalam Go
Pelayan websocket sering menerima data JSON yang dibalut dalam pasangan nilai kunci yang menunjukkan jenis nilai . Walaupun pakej "pengekodan/json" menyediakan keupayaan unmarshalling yang mudah, terdapat keperluan untuk menghuraikan data JSON sebahagiannya ke dalam peta untuk pemprosesan selanjutnya.
Pendekatan Menggunakan peta[rentetan]json.RawMessage
Untuk mencapai pembongkaran separa, seseorang boleh menggunakan peta[rentetan]json.RawMessage. Pendekatan ini membolehkan data JSON dibongkar ke dalam peta, dengan kuncinya ialah nama sifat dan nilainya ialah data JSON yang tidak dihuraikan.
import ( "encoding/json" "fmt" ) func main() { data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`) var objmap map[string]json.RawMessage err := json.Unmarshal(data, &objmap) if err != nil { fmt.Printf("Error unmarshaling JSON: %v", err) return } // Unpack Individual Values // Parsing sendMsg var s sendMsg err = json.Unmarshal(objmap["sendMsg"], &s) if err != nil { fmt.Printf("Error unmarshaling 'sendMsg': %v", err) return } fmt.Println("sendMsg:", s) // Parsing say var str string err = json.Unmarshal(objmap["say"], &str) if err != nil { fmt.Printf("Error unmarshaling 'say': %v", err) return } fmt.Println("say:", str) } type sendMsg struct { User string Msg string }
Dalam pendekatan ini, objmap akan mengandungi kunci "sendMsg " dengan nilai yang merupakan data JSON mentah yang mewakili objek sendMsg. Dengan menyahmarshaling data ini lagi ke dalam struktur sendMsg, medan individu (Pengguna dan Msg) boleh diakses.
Nota: Untuk memastikan penyahmarshalan berjaya, ingat untuk mengeksport medan dalam struct sendMsg (iaitu, Pengguna dan Msg).
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Sebahagian Peta JSON dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!