Go 中将字符串转换为 json

我是 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) 

邮递员的输出 -

https://img.mukewang.com/64c766be00013b2f10010601.jpg

格式化输出 -

https://img3.mukewang.com/64c766cb0001dae909200417.jpg

慕工程0101907
浏览 155回答 1
1回答

慕村225694

问题是响应内容类型标头不是 application/json。通过在写入正文之前设置标题来修复。w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(list)如果应用程序未指定内容类型,则 net/http 服务器会调用 http.DetectConentType在响应标头中设置内容类型。该函数不检测 JSON,默认为 text/plain。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go