无法在 Golang 中解组 JSON 数组

我在 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)

任何人都可以在这方面帮助我吗?提前致谢。


小怪兽爱吃肉
浏览 143回答 3
3回答

慕婉清6462132

更改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

蝴蝶刀刀

考虑将其解组为一部分内容:type Content struct {    Title  string            `json:"title"`    Author string            `json:"author"`    Tags   map[string]string `json:"tags"`}// Send in your jsonfunc 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

慕容708150

通过对上面的代码做一个简单的修改,我能够解决这个问题。var Content []struct {    Title           string   `json:"title"`    Author          string   `json:"author"`    Tags            map[string]string   `json:"tags"`}感谢您的所有回复。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go