首頁 > 後端開發 > Golang > 如何在 Golang 中處理傳入的不同結構的 WebSocket JSON 訊息?

如何在 Golang 中處理傳入的不同結構的 WebSocket JSON 訊息?

Susan Sarandon
發布: 2024-11-16 17:17:03
原創
1088 人瀏覽過

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

使用 Golang 處理傳入的 WebSocket JSON 訊息

JSON 資料的序列化和反序列化在 WebSocket 通訊中至關重要。在 Go 中,gorilla websocket 庫提供了一種發送和接收 JSON 訊息的便捷方法。然而,在處理多個結構時,確定它們的類型可能會成為一個挑戰。

要處理這種情況,請考慮使用以下通用訊息結構:

type Messages struct {
  Control string `json:"control"`
  X json.RawMessage
}
登入後複製

在此結構中, Control指定傳入訊息的類型,而X 是可以保存實際資料的無類型欄位。

要處理傳入訊息,請遵循以下操作步驟:

  1. 將訊息讀入Messages 結構體:

    var m Messages
    err := c.ReadJSON(&m)
    if err != nil {
        // handle error
    }
    登入後複製
  2. 根據Control 的值,確定資料類型:

    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
    登入後複製

利用json.RawMessage,您可以靈活地處理多種資料類型。這種方法可讓您根據指定的類型動態反序列化傳入訊息。

以上是如何在 Golang 中處理傳入的不同結構的 WebSocket JSON 訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板