全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-18 6 分钟 ✍️ juanwangdev

JSON数据返回

JSON 是 RESTful API 最常用的响应格式,Gin 对其提供了完善支持。

使用 gin.H

gin.Hmap[string]interface{} 的简写:

Go
r.GET("/user", func(c *gin.Context) {
    c.JSON(200, gin.H{
        "code": 0,
        "msg":  "success",
        "data": gin.H{
            "name": "张三",
            "age":  25,
        },
    })
})

使用结构体

结构体可定义明确的字段和标签:

Go
type Response struct {
    Code int         `json:"code"`
    Msg  string      `json:"msg"`
    Data interface{} `json:"data"`
}

type UserInfo struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

r.GET("/profile", func(c *gin.Context) {
    c.JSON(200, Response{
        Code: 0,
        Msg:  "success",
        Data: UserInfo{Name: "李四", Age: 30},
    })
})

返回数组/切片

Go
r.GET("/users", func(c *gin.Context) {
    users := []UserInfo{
        {Name: "张三", Age: 25},
        {Name: "李四", Age: 30},
    }
    c.JSON(200, gin.H{
        "code": 0,
        "data": users,
    })
})

JSONP 响应

支持跨域 JSONP 请求:

Go
r.GET("/jsonp", func(c *gin.Context) {
    c.JSONP(200, gin.H{
        "message": "jsonp response",
    })
})

请求 http://localhost:8080/jsonp?callback=myFunc 返回:

JavaScript
myFunc({"message":"jsonp response"});

美化 JSON 输出

开发环境需要格式化输出:

Go
func main() {
    gin.SetMode(gin.DebugMode) // 开发模式,JSON 格式化输出
    // gin.SetMode(gin.ReleaseMode) // 生产模式,压缩输出

    r := gin.Default()
    // ...
}

字段控制技巧

Go
type User struct {
    Name     string `json:"name"`
    Password string `json:"-"`        // 序列化时忽略
    Email    string `json:"email,omitempty"` // 为空时忽略
}
标签作用
json:"name"指定 JSON 字段名
json:"-"序列化时忽略该字段
json:",omitempty"为零值时忽略

生产环境使用 ReleaseMode 可减少 JSON 响应体积,提升性能。

要点总结

  • gin.H 适合快速构建响应
  • 结构体配合 JSON 标签规范输出格式
  • omitempty 可省略零值字段
  • 生产环境使用 ReleaseMode 压缩输出

📝 发现内容有误?点击此处直接编辑

← 上一篇 Gin环境搭建
下一篇 → 响应处理基础
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库