Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyahseri Berbilang Jenis Mesej JSON dengan Cekap dalam Go Websocket Menggunakan json.RawMessage?

Bagaimana untuk Menyahseri Berbilang Jenis Mesej JSON dengan Cekap dalam Go Websocket Menggunakan json.RawMessage?

Patricia Arquette
Lepaskan: 2024-11-24 03:51:14
asal
905 orang telah melayarinya

How to Deserialize Multiple JSON Message Types Efficiently in Go Websocket Using json.RawMessage?

Go Websocket: Penyahserialisasian Pelbagai Jenis Mesej JSON Menggunakan json.RawMessage

Apabila bekerja dengan soket web Gorilla, mengendalikan mesej JSON yang masuk daripada pelbagai jenis boleh memberikan cabaran. Menggunakan kaedah ReadJSON untuk setiap jenis secara berasingan boleh menyusahkan. Artikel ini meneroka penyelesaian yang menggunakan jenis json.RawMessage untuk mengendalikan penyahserikatan dengan cekap.

Masalah:

Bagaimanakah kita boleh menyahsiri mesej JSON yang masuk ke dalam struktur berbeza berdasarkan medan kawalan dalam JSON, tanpa menggunakan berbilang ReadJSON panggilan?

Penyelesaian:

Tentukan struktur pembalut Mesej dengan medan Kawalan untuk menunjukkan jenis data sebenar dan medan X jenis json.RawMessage untuk dipegang data bersiri.

type Messages struct {
    Control string          `json:"control"`
    X       json.RawMessage `json:"X"`
}
Salin selepas log masuk

Nyahkawal mesej JSON yang masuk ke dalam Messages struct.

var m Messages
err := c.ReadJSON(&m)
Salin selepas log masuk

Periksa medan Kawalan untuk menentukan jenis data sebenar. Nyahmarshal medan X ke dalam struct yang sesuai.

switch m.Control {
case "Foo":
    var foo Foo
    if err := json.Unmarshal([]byte(m.X), &foo); err != nil {
       // handle error
    }
    // do something with foo

case "Bar":
   ... follow pattern for Foo
}
Salin selepas log masuk

Menggunakan json.RawMessage membenarkan pendekatan generik untuk menyahsiri mesej masuk daripada jenis yang berbeza, memudahkan pengendalian berbilang jenis mesej dalam aplikasi soket web.

Atas ialah kandungan terperinci Bagaimana untuk Menyahseri Berbilang Jenis Mesej JSON dengan Cekap dalam Go Websocket Menggunakan json.RawMessage?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan