Siri dan penyahsirilan data JSON adalah penting dalam komunikasi WebSocket. Dalam Go, perpustakaan soket web gorila menyediakan cara yang mudah untuk menghantar dan menerima mesej JSON. Walau bagaimanapun, apabila berurusan dengan berbilang struct, menentukan jenisnya boleh menjadi satu cabaran.
Untuk mengendalikan senario ini, pertimbangkan untuk menggunakan struktur mesej generik seperti di bawah:
type Messages struct { Control string `json:"control"` X json.RawMessage }
Dalam struktur ini, Control menentukan jenis mesej masuk, manakala X ialah medan yang tidak ditaip yang boleh menyimpan data sebenar.
Untuk mengendalikan masuk mesej, ikut langkah berikut:
Baca mesej ke dalam struct Mesej:
var m Messages err := c.ReadJSON(&m) if err != nil { // handle error }
Berdasarkan nilai Kawalan, tentukan jenis data:
switch m.Control { case "Foo": var foo Foo if err := json.Unmarshal([]byte(m.X), &foo); err != nil { // handle error } // do something with foo } ... // Handle other cases similarly
Dengan menggunakan json.RawMessage, anda mendapat fleksibiliti dalam mengendalikan pelbagai jenis data. Pendekatan ini membolehkan anda menyahsiri mesej masuk secara dinamik berdasarkan jenis yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Mesej JSON WebSocket Masuk dengan Struktur Berbeza di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!