
使用json.RawMessage字段为消息的固定部分定义结构类型,以捕获消息的变体部分。为每个变量类型定义结构类型,并根据命令对其进行解码。
type Message struct { Cmd string `json:"cmd"` Data json.RawMessage}type CreateMessage struct { Conf map[string]int `json:"conf"` Info map[string]int `json:"info"`}func main() { var m Message if err := json.Unmarshal(data, &m); err != nil { log.Fatal(err) } switch m.Cmd { case "create": var cm CreateMessage if err := json.Unmarshal([]byte(m.Data), &cm); err != nil { log.Fatal(err) } fmt.Println(m.Cmd, cm.Conf, cm.Info) default: log.Fatal("bad command") }}游乐场的例子
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)