我有一个 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
,如何获取?
最佳答案
您应该通过大写的第一个字母来导出 Result
的字段(code
、msg
、data
)字段(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)
}
关于json - 如何在golang中解码json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355847/