我是一个新手去尝试编写一个简单的应用程序来从greatschools.org中提取一些学校数据。 json数据如下所示:
{ "schools": { "school": [ { "gsId": 1, "name": "Catholic School", "type": "private", "gradeRange": "PK-9", "enrollment": 39, "parentRating": 4, "city": "Denver", "state": "CO", "address": "111 Main St., \nDenver, CO 80100", "phone": "(720) 555-1212", "fax": "(720) 555-1212", "website": "http://www.myschool.org", "ncesId": "1234567", "lat": 30.519446, "lon": -105.71314, "overviewLink": "http://www.greatschools.org/colorado/Denver/1-Catholic-School/?s_cid=gsapi", "ratingsLink": "http://www.greatschools.org/school/rating.page?state=CO&id=1&s_cid=gsapi", "reviewsLink": "http://www.greatschools.org/school/parentReviews.page?state=CO&id=1&s_cid=gsapi", "schoolStatsLink": "http://www.greatschools.org/cgi-bin/CO/otherprivate/1" }...
我的结构看起来像这样:
type SchoolStruct struct { GsId int Name string SchoolType string GradeRange string Enrollment int ParentRating int City string State string Address string Phone string Fax string Website string NcesId string Lat float64 Lon float64 OverviewLink string RatingsLink string ReviewsLink string SchoolStatsLink string } type SchoolsStruct struct { Schools []SchoolStruct }
当我运行我的代码时,我得到" json:无法将对象解组为类型为[] main.SchoolStruct"
的Go值我使用gopencils库来发出请求,并使用非常简单的请求成功使用它。你看到我可能做错了吗?
答案 0 :(得分:3)
有一些问题。对于初学者,你试图解码学校,但数据是学校,其中有一个学校成员(阵列)。
另一个问题是你的名字不匹配。 GsId
!= gsid
除非您使用struct标签告诉Go。
尝试解码为SchoolResponseData:
type SchoolResponseData struct {
Schools struct {
School []struct {
Address string `json:"address"`
City string `json:"city"`
Enrollment float64 `json:"enrollment"`
Fax string `json:"fax"`
GradeRange string `json:"gradeRange"`
GsId float64 `json:"gsId"`
Lat float64 `json:"lat"`
Lon float64 `json:"lon"`
Name string `json:"name"`
NcesId string `json:"ncesId"`
OverviewLink string `json:"overviewLink"`
ParentRating float64 `json:"parentRating"`
Phone string `json:"phone"`
RatingsLink string `json:"ratingsLink"`
ReviewsLink string `json:"reviewsLink"`
SchoolStatsLink string `json:"schoolStatsLink"`
State string `json:"state"`
Type string `json:"type"`
Website string `json:"website"`
} `json:"school"`
} `json:"schools"`
}