我在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)
有人可以帮我这方面吗? 提前谢谢。
答案 0 :(得分:0)
改变它
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
答案 1 :(得分:0)
考虑将其拆分为一部分内容:
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
答案 2 :(得分:0)
我能够通过在上面的代码中做一个简单的修改来解决这个问题。
var Content []struct {
Title string `json:"title"`
Author string `json:"author"`
Tags map[string]string `json:"tags"`
}
感谢您的所有回复。