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

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

Patricia Arquette
發布: 2024-11-24 03:51:14
原創
948 人瀏覽過

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

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