json - 如何在golang中解码json

标签 json go

我有一个 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[]}

我想要urldata ,如何获取?

最佳答案

您应该通过大写的第一个字母来导出 Result 的字段(codemsgdata)字段(CodeMsgData)来访问(设置/获取)它们:

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)
}

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

相关问题:Golang - Capitals in struct fields

关于json - 如何在golang中解码json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355847/

相关文章:

c++ - 在数组C++中读取数组内部的项目

JavaScript,访问json属性

json - 如何从json中获取相同的hash

pointers - 满足接口(interface)的 Go 结构方法类型

go - 谁能举例说明 panic 和 error 之间的确切区别以及何时在 go 中使用它们?

go - Flanneld:错误注册网络:找不到具有管理 IP 的网络

go - 检查 rune 是否在基本多语言平面中的正确方法是什么?

python - 如何将 gz 文件附加到 python 中的 json 对象?

json - 在 Go 中从 JSON 文件动态定义结构

javascript - 如何使用 Lodash 对 JSON 数据进行子级过滤