使用 gin gonic 返回文字 JSON 的最简单方法

我正在通过为 Web 服务器构建一个简单的 API 接口来学习 Go。当命中默认路由时,我想以 JSON 返回一条简单的消息。


到目前为止,在线阅读,这是返回文本 JSON 字符串、对其进行编码并将其发送给用户的最简单方法。


func GetDefault(c *gin.Context)  {

    jsonData := []byte(`{"msg":"this worked"}`)


    var v interface{}

    json.Unmarshal(jsonData, &v)

    data := v.(map[string]interface{})  


    c.JSON(http.StatusOK,data)

}

这是最有效/最快的方法吗?


在node.js和express中,我会做类似的事情:


return res.status(200).json({"msg":"this worked"});

在 Go + Gin 中执行此操作的最佳方法是什么?


翻阅古今
浏览 196回答 2
2回答

鸿蒙传说

一种选择是使用Context.Data()您提供要发送的数据(以及内容类型)的位置:func GetDefault(c *gin.Context)  {    jsonData := []byte(`{"msg":"this worked"}`)    c.Data(http.StatusOK, "application/json", jsonData)}您还可以使用内容类型常量:func GetDefault(c *gin.Context)  {    jsonData := []byte(`{"msg":"this worked"}`)    c.Data(http.StatusOK, gin.MIMEJSON, jsonData)}如果您的数据可用作string值并且很大,则可以避免将其转换为:[]byteContext.DataFromReader()func GetDefault(c *gin.Context) {    jsonStr := `{"msg":"this worked"}`    c.DataFromReader(http.StatusOK,        int64(len(jsonStr)), gin.MIMEJSON, strings.NewReader(jsonStr), nil)}如果您的 JSON 为io.Reader,例如 ,则此解决方案也适用os.File。

qq_花开花谢_0

gin.H您可以在响应中使用该结构:c.JSON(http.StatusOK, gin.H{"msg":"this worked"})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go