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

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

Susan Sarandon
Susan Sarandon原創
2024-11-16 17:17:031082瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn