Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengendalikan Mesej JSON WebSocket Masuk dengan Struktur Berbeza di Golang?

Bagaimana untuk Mengendalikan Mesej JSON WebSocket Masuk dengan Struktur Berbeza di Golang?

Susan Sarandon
Lepaskan: 2024-11-16 17:17:03
asal
1089 orang telah melayarinya

How to Handle Incoming WebSocket JSON Messages with Different Structures in Golang?

Mengendalikan Mesej JSON WebSocket Masuk dengan Golang

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
}
Salin selepas log masuk

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:

  1. Baca mesej ke dalam struct Mesej:

    var m Messages
    err := c.ReadJSON(&m)
    if err != nil {
        // handle error
    }
    Salin selepas log masuk
  2. 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
    Salin selepas log masuk

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!

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