为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 Golang 中解组 JSON 数组

无法在 Golang 中解组 JSON 数组

Go
小怪兽爱吃肉 2022-01-04 21:03:05
我在 URL 中收到以下响应,我想解组它,但我无法这样做。这是我想要解组的那种响应。[  {"title": "Angels And Demons", "author":"Dan Brown", "tags":[{"tagtitle":"Demigod", "tagURl": "/angelDemon}] }  {"title": "The Kite Runner", "author":"Khalid Hosseinei", "tags":[{"tagtitle":"Kite", "tagURl": "/kiteRunner"}] }  {"title": "Dance of the dragons", "author":"RR Martin", "tags":[{"tagtitle":"IronThrone", "tagURl": "/got"}] }]我正在尝试解组这种响应,但无法这样做。这是我正在尝试编写的代码。res, err := http.Get(url)if err != nil {    log.WithFields(log.Fields{        "error": err,    }).Fatal("Couldn't get the html response")}defer res.Body.Close()b, err := ioutil.ReadAll(res.Body)if err != nil {    log.WithFields(log.Fields{        "error": err,    }).Fatal("Couldn't read the response")}s := string(b)var data struct {    Content []struct {        Title           string   `json:"title"`        Author          string   `json:"author"`        Tags            map[string]string   `json:"tags"`    }}if err := json.Unmarshal([]byte(s), &data); err != nil {    log.WithFields(log.Fields{        "error": err,    }).Error("Un-marshalling could not be done.")}fmt.Println(data.Content)任何人都可以在这方面帮助我吗?提前致谢。
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

更改


var data struct {

    Content []struct {

        Title           string   `json:"title"`

        Author          string   `json:"author"`

        Tags            map[string]string   `json:"tags"`

    } }

对此


type Content struct {

        Title           string   `json:"title"`

        Author          string   `json:"author"`

        Tags            map[string]string   `json:"tags"`


}

var data []Content



查看完整回答
反对 回复 2022-01-04
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

考虑将其解组为一部分内容:


type Content struct {

    Title  string            `json:"title"`

    Author string            `json:"author"`

    Tags   map[string]string `json:"tags"`

}


// Send in your json

func convertToContent(msg string) ([]Content, error) {

    content := make([]Content, 0, 10)


    buf := bytes.NewBufferString(msg)

    decoder := json.NewDecoder(buf)


    err := decoder.Decode(&content)

    return content, err

}

在此处查看您的用例示例:http : //play.golang.org/p/TNjb85XjpP


查看完整回答
反对 回复 2022-01-04
?
慕容708150

TA贡献1831条经验 获得超4个赞

通过对上面的代码做一个简单的修改,我能够解决这个问题。


var Content []struct {

    Title           string   `json:"title"`

    Author          string   `json:"author"`

    Tags            map[string]string   `json:"tags"`

}

感谢您的所有回复。


查看完整回答
反对 回复 2022-01-04
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信