为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
翻阅古今 2023-06-26 16:43:28
我正在通过为 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 中执行此操作的最佳方法是什么?
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

一种选择是使用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



查看完整回答
反对 回复 2023-06-26
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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

c.JSON(http.StatusOK, gin.H{"msg":"this worked"})


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信