我正在用 Go 编写一个 websocket 客户端。我从服务器收到以下 JSON:
{"args":[{"time":"2013-05-21 16:57:17"}],"name":"send:time"}
我正在尝试访问time
参数,但无法掌握如何深入了解接口类型:
package main;
import "encoding/json"
import "log"
func main() {
msg := `{"args":[{"time":"2013-05-21 16:56:16", "tzs":[{"name":"GMT"}]}],"name":"send:time"}`
u := map[string]interface{}{}
err := json.Unmarshal([]byte(msg), &u)
if err != nil {
panic(err)
}
args := u["args"]
log.Println( args[0]["time"] ) // invalid notation...
}
这显然是错误的,因为符号不正确:
invalid operation: args[0] (index of type interface {})
我只是找不到一种方法来挖掘地图以获取深度嵌套的键和值。
一旦我可以克服抓取动态值,我想声明这些消息。我将如何编写一个类型结构来表示这种复杂的数据结构?