我有一个使用(相对)标准的围棋程序 go.net/websocket图书馆。我正在尝试接收和解码来自网页的消息,该网页对每种类型的消息具有不同的结构,即
{type: "messagetype", msg: { /* structure different for each message type */ } }
有什么方法可以对消息进行“部分”解码,仅在继续将实际消息解码为 go 结构之前检查 type
字段?
这是否需要编写自定义 Codec
,即 JSON
,将消息本身委托(delegate)给 JSON 编解码器?
最佳答案
使用json.RawMessage延迟解码,例如
struct {
type string
msg json.RawMessage
}
json.RawMessage
是 []byte
的别名,您可以根据需要进一步解码。
关于websocket - 如何使用 golang websockets 解码多种消息类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053563/