JSON 資料的序列化和反序列化在 WebSocket 通訊中至關重要。在 Go 中,gorilla websocket 庫提供了一種發送和接收 JSON 訊息的便捷方法。然而,在處理多個結構時,確定它們的類型可能會成為一個挑戰。
要處理這種情況,請考慮使用以下通用訊息結構:
type Messages struct { Control string `json:"control"` X json.RawMessage }
在此結構中, Control指定傳入訊息的類型,而X 是可以保存實際資料的無類型欄位。
要處理傳入訊息,請遵循以下操作步驟:
將訊息讀入Messages 結構體:
var m Messages err := c.ReadJSON(&m) if err != nil { // handle error }
根據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中文網其他相關文章!