一尘不染

如何使用golang网络套接字解码多种消息类型?

go

我必须使用(相对)标准的围棋程序go.net/websocket库。我正在尝试从网页中接收和解码消息,这些消息对于每种消息类型都具有不同的结构,即

{type: "messagetype", msg: { /* structure different for each message type */ } }

有什么方法可以对消息进行“部分”解码,仅type在继续将实际消息解码为go结构之前检查该字段?

这是否有必要编写一个自定义Codeca’la JSON,以将其委托给消息本身的JSON编解码器?


阅读 160

收藏
2020-07-02

共1个答案

一尘不染

使用json.RawMessage延迟解码,例如

struct {
    type string
    msg  json.RawMessage
}

json.RawMessage是一个别名[]byte,您可以根据需要对其进一步解码。

2020-07-02