我有一个json:
{"code":200,
"msg":"success",
"data":{"url":"https:\/\/mp.weixin.qq.com\/cgi-bin\/showqrcode?ticket=gQHQ7jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyX3pqS0pMZlA4a1AxbEJkemhvMVoAAgQ5TGNYAwQsAQAA"}}
我定义了一个结构:
type Result struct {
code int
msg string `json:"msg"`
data map[string]interface{} `json:"data"`
}
代码:
var res Result
json.Unmarshal(body, &res)
fmt.Println(res)
输出为:{0 map[]}
我想在url
中获得data
,如何获得它?
答案 0 :(得分:2)
您应该通过大写字母的第一个字母(code
,msg
来导出data
的字段Result
,Code
,Msg
) },Data
)访问(设置/获取)它们:
package main
import (
"encoding/json"
"fmt"
)
type Result struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data map[string]interface{} `json:"data"`
}
func main() {
str := `{"code":200,"msg":"success","data":{"url":"https:\/\/mp.weixin.qq.com\/cgi-bin\/showqrcode?ticket=gQHQ7jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyX3pqS0pMZlA4a1AxbEJkemhvMVoAAgQ5TGNYAwQsAQAA"}}`
var res Result
err := json.Unmarshal([]byte(str), &res)
fmt.Println(err)
fmt.Println(res)
}
上播放代码