首頁  >  文章  >  後端開發  >  如何在 Go Websocket 中使用 json.RawMessage 高效反序列化多個 JSON 訊息類型?

如何在 Go Websocket 中使用 json.RawMessage 高效反序列化多個 JSON 訊息類型?

Patricia Arquette
Patricia Arquette原創
2024-11-24 03:51:14893瀏覽

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

Go Websocket:使用json.RawMessage 反序列化多種JSON 訊息類型

使用Gorilla websocket 時,處理傳入的多種類型的JSON 訊息可以提出挑戰。分別對每種類型使用 ReadJSON 方法可能會很麻煩。本文探討了一種利用 json.RawMessage 類型高效處理反序列化的解決方案。

問題:

我們如何根據JSON 中的控製字段,無需使用多個ReadJSON

解決方案:

解決方案:
type Messages struct {
    Control string          `json:"control"`
    X       json.RawMessage `json:"X"`
}

var m Messages
err := c.ReadJSON(&m)
解決方案:

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
}

解決方案:

解決方案:解決方案:解:定義一個包裝結構Messages,其中包含一個Control欄位來指示實際資料的類型,以及一個 json.RawMessage 類型的 X 欄位來保存序列化資料。 將傳入的 JSON 訊息解組到訊息中struct.檢查 Control 欄位以確定資料的實際類型。將 X 字段解組到適當的結構中。 使用 json.RawMessage 允許使用通用方法來反序列化不同類型的傳入訊息,從而簡化 Websocket 應用程式中多種訊息類型的處理。

以上是如何在 Go Websocket 中使用 json.RawMessage 高效反序列化多個 JSON 訊息類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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