Json 如何使用Golang从websocket读取值
我是新手,正在连接股票交易Websocket,我的回复日志如下Json 如何使用Golang从websocket读取值,json,go,websocket,Json,Go,Websocket,我是新手,正在连接股票交易Websocket,我的回复日志如下 map[数据:[map[p:111.95 s:AAPL t:1.599838531053e+12 v:1]]类型:交易] 如何访问内部值? 我的代码看起来像 var msg interface{} // map[data:[ DATA ] type:trade] //DATA === map[p:117.18 s:AAPL t:1.599684492829e+12 v:200] for {
map[数据:[map[p:111.95 s:AAPL t:1.599838531053e+12 v:1]]类型:交易]
如何访问内部值?我的代码看起来像
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{“数据”:[{“p”:7296.89,“s”:“二进制:BTCUSDT”,“t”:1575526691134,“v”:0.011467}],“类型”:“贸易”}
如果我将map[string]
添加到接口,我可以通过执行msg[“data”]
来访问数据片,但是当我执行msg[“data”][0]
访问数据片时,我会收到一个编译器错误
我是一个go noob,因此如果这是一个愚蠢的问题,我深表歉意。如问题注释所示,声明一个与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])
@I固定的反反射柱