使用RawMessage。
type Messages struct {
Control string `json:"control"`
X json.RawMessage
}
var m Messages
err := c.ReadJSON(&m)
if err != nil {
// handle error
}
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
}