登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-22 14:18:34 366浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《使用 gin gonic 返回文字 JSON 的最简单方法》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在通过为 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 中执行此操作的最佳方法是什么?


解决方案


您可以在响应中使用 gin.h 结构:

c.json(http.statusok, gin.h{"msg":"this worked"})

一种选择是使用 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 值并且很大,则可以在使用 Context.DataFromReader() 时避免将其转换为 []byte

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

今天关于《使用 gin gonic 返回文字 JSON 的最简单方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>