如何在golang中解组json

Bla*_*mba 3 json go

我有一个 json:

{"code":200,
 "msg":"success",
 "data":{"url":"https:\/\/mp.weixin.qq.com\/cgi-bin\/showqrcode?ticket=gQHQ7jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyX3pqS0pMZlA4a1AxbEJkemhvMVoAAgQ5TGNYAwQsAQAA"}}
Run Code Online (Sandbox Code Playgroud)

我定义了一个结构:

type Result struct {
    code int
    msg  string                 `json:"msg"`
    data map[string]interface{} `json:"data"`
}
Run Code Online (Sandbox Code Playgroud)

对于这段代码:

var res Result
json.Unmarshal(body, &res)
fmt.Println(res)
Run Code Online (Sandbox Code Playgroud)

输出是:{0 map[]}

我想进去urldata怎么进去?

phi*_*kim 5

您应该通过将字段 ( 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)
}
Run Code Online (Sandbox Code Playgroud)

在https://play.golang.org/p/23ah8e_hCa上播放代码

相关问题:Golang - 结构字段中的大写字母