如何使用 Golang 从 websocket 读取值

我是 Go 新手,我正在连接到股票交易 Websocket,我的响应日志如下所示 map[data:[map[p:111.95 s:AAPL t:1.599838531053e+12 v:1]] type:trade] 如何访问内部值?

我的代码看起来像


    var msg interface{}


    // map[data:[ DATA ] type:trade]

    //DATA === map[p:117.18 s:AAPL t:1.599684492829e+12 v:200]

    for {

        err := w.ReadJSON(&msg)

        if err != nil {

            panic(err)

        }

        fmt.Println(msg)

    }

示例 JSON

{ "data":[{"p":7296.89,"s":"BINANCE:BTCUSDT","t":1575526691134,"v":0.011467}], "type":"trade" }


如果我添加map[string]到接口,我可以通过做访问数据切片msg["data"],但是当我msg["data"][0]访问切片时,我得到一个编译器错误。


我是菜鸟,所以如果这是一个愚蠢的问题,我深表歉意


慕姐4208626
浏览 185回答 1
1回答

慕盖茨4494581

正如问题评论所建议的,声明一个匹配 JSON 文档结构的 Go 类型:type Message struct {    Data []struct {        P float64 `json:"p"`        S string  `json:"s"`        T int64   `json:"t"`        V float64 `json:"v"`    } `json:"data"`    Type string `json:"type"`}解组为该类型的值:for {    var msg Message    err := w.ReadJSON(&msg)    if err != nil {        panic(err)    }    fmt.Println(msg)}使用选择器和索引表达式访问字段:fmt.Println(msg.Data[0])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go