我是 Go 新手,正在学习设置 http 服务器。我想做的是在我的 sql 数据库中返回 10 部电影的 json 输出。但结果输出不是 json 格式。我用在线json格式化程序检查了输出,输出是json格式的。我尝试了 json.Marshall 和 json.Encode,但两者都没有给出所需的结果。type movie_list struct { Page int `json:"Page"` Results []movie `json:"Results"`}type movie struct { Id int `json:"Id"` Title string `json:"Title"` Language string `json:"Language"` Release_date string `json:"Release_date"` Poster_path string `json:"Poster_path"` Background_path string `json:"Background_path"` Overview string `json:"Overview"` Genre_ids string `json:"Genre_ids"`}rows,err:=db.Query("select * from movies limit 10") if err!=nil{ fmt.Println(err) } var list movie_list var tag movie for rows.Next(){ err:=rows.Scan(&tag.Id,&tag.Title,&tag.Language,&tag.Release_date,&tag.Poster_path,&tag.Background_path,&tag.Overview,&tag.Genre_ids) if err != nil { fmt.Println(err) } list.Results = append(list.Results,tag) }json.NewEncoder(w).Encode(list) 邮递员的输出 -格式化输出 -
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
问题是响应内容类型标头不是 application/json。通过在写入正文之前设置标题来修复。
w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(list)
如果应用程序未指定内容类型,则 net/http 服务器会调用 http.DetectConentType在响应标头中设置内容类型。该函数不检测 JSON,默认为 text/plain。
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消