2 回答
TA贡献1829条经验 获得超6个赞
是初学者常见的错误。由于语言设计,encoding/json包只能解组为导出的字段。
从encoding/json包:
要将 JSON 解组为结构,Unmarshal 将传入的对象键与 Marshal 使用的键(结构字段名称或其标签)进行匹配,更喜欢精确匹配,但也接受不区分大小写的匹配。 Unmarshal 只会设置结构的导出字段。
要导出字段,只需使用名称的首字母大写。例如。:
type Payload struct {
Results Data
}
代替
type Payload struct {
results Data
}
TA贡献2080条经验 获得超4个赞
首先,您在 JSON]的末尾缺少一个右方括号results。
其次,您没有根据收到的 JSON 来构建结构。
最后,在处理 Unmarshal/marshaling 时,在结构中每个导出字段后使用 JSON 标记以帮助 Go 检测适当的字段(如果您根据Unmarshal/marshal 识别字段的方式命名字段,则不需要。
type Payload struct {
Page int
Results []Data
}
type Data struct {
PosterPath string `json:"poster_path"`
Adult bool `json:"adult"`
Overview string `json:"overview"`
ReleaseDate string `json:"release_date"`
GenreIds []int `json:"genre_ids"`
Id int `json:"id"`
OriginalTitle string `json:"original_title"`
OriginalLanguage string `json:"original_language"`
Title string `json:"title"`
BackdropPath string `json:"backdrop_path"`
Popularity float64 `json:"popularity"`
VoteCount int `json:"vote_count"`
Video bool `json:"video"`
VoteAverage float64 `json:"vote_average"`
}
请注意,GenreIds也必须[]int匹配 JSON 数据。最好不要在 Go 中使用 CamelCase。
见https://play.golang.org/p/VduPD9AY84
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报