这是我试图做的简化版本:
type example struct {
Topics []struct {
Id int64 `json:"id"`
Title string `json:"title"`
Body string `json:"body"`
Tags []string `json:"tags"`
Search_phrases []string `json:"search_phrases"`
} `json:"topics"`
}
func main() {
body := []byte(
`
{
"topics": [{
"id": 35436,
"title": "How to Disassemble the ED209",
"body": "Carefully with very large pliers",
"tags": ["danger"],
"search_phrases": ["red", "yellow"]
}]
}
`)
var topics []example
err := json.Unmarshal(body, &topics)
if err != nil {
fmt.Println(err)
}
/*
for _, topics := range topics {
//doSomething
}
*/
}
这对我来说很好,但我得到了:
" json:无法将对象解组为[] main.example"
类型的Go值
我可能只是错过了一些小事,但我现在似乎无法找到它。
答案 0 :(得分:2)
您正在尝试将单个元素解组为列表。 改为使用单个元素。
http://play.golang.org/p/g4Fblu_YRP
package main
import (
"encoding/json"
"fmt"
)
type example struct {
Topics []struct {
Id int64 `json:"id"`
Title string `json:"title"`
Body string `json:"body"`
Tags []string `json:"tags"`
Search_phrases []string `json:"search_phrases"`
} `json:"topics"`
}
func main() {
body := []byte(
`
{
"topics": [{
"id": 35436,
"title": "How to Disassemble the ED209",
"body": "Carefully with very large pliers",
"tags": ["danger"],
"search_phrases": ["red", "yellow"]
}]
}
`)
var topic example
err := json.Unmarshal(body, &topic)
if err != nil {
fmt.Println(err)
}
fmt.Printf("%#v\n", topic)
/*
for _, topics := range topics {
//doSomething
}
*/
}
答案 1 :(得分:2)
该错误确实解释了问题,您尝试使用[]example
,其中您的json示例是一个对象而非数组,只需将其更改为:
var ex example
err := json.Unmarshal(body, &ex)
if err != nil {
fmt.Println(err)
}
fmt.Println(ex.Topics)