返回JSON格式信息到前端,在Gin框架中可使用两种方式
第一种方法,使用map类型返回
main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r :=gin.Default()
r.GET("/json", func(c *gin.Context) {
//方法一:使用map
data := map[string]interface{}{
"name": "Go语言",
"message": "Gin框架",
}
c.JSON(http.StatusOK,data)
})
r.Run(":9090")
}
gin.H
main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r :=gin.Default()
r.GET("/json", func(c *gin.Context) {
//方法一:使用map
//data := map[string]interface{}{
// "name": "Go语言",
// "message": "Gin框架",
//}
data := gin.H{"name":"Go语言","message":"Gin框架"}
c.JSON(http.StatusOK,data)
})
r.Run(":9090")
}
再修改一下,严谨美观的写法:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/json", func(c *gin.Context) {
//方法一:使用map
//data := map[string]interface{}{
// "name": "Go语言",
// "message": "Gin框架",
//}
//data := gin.H{"name":"Go语言","message":"Gin框架"}
c.JSON(http.StatusOK, gin.H{"name": "Go语言", "message": "Gin框架"})
})
r.Run(":9090")
}
运行程序
go run main.go
http://ip:9090/json
第二种方法,使用结构体方式,这种方式用途最多,最常用
main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/json1", func(c *gin.Context) {
//方法一:使用map
//data := map[string]interface{}{
// "name": "Go语言",
// "message": "Gin框架",
//}
//data := gin.H{"name":"Go语言","message":"Gin框架"}
//第一种方法使用内置gin.H map类型
c.JSON(http.StatusOK, gin.H{"name": "Go语言", "message": "Gin框架"})
})
//第二种方法使用结构体
type msg struct {
Name string
Message string
}
r.GET("/json2", func(c *gin.Context) {
data :=msg{
Name: "Go语言",
Message: "Gin框架",
}
c.JSON(http.StatusOK,data)
})
r.Run(":9090")
}
运行程序
go run main.go
打开浏览器
c.JSON是访问不到的,涉及到序列化问题
可以使用
tag
方式,添加"json:"name"
"main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/json1", func(c *gin.Context) {
//方法一:使用map
//data := map[string]interface{}{
// "name": "Go语言",
// "message": "Gin框架",
//}
//data := gin.H{"name":"Go语言","message":"Gin框架"}
//第一种方法使用内置gin.H map类型
c.JSON(http.StatusOK, gin.H{"name": "Go语言", "message": "Gin框架"})
})
type msg struct {
Name string `json:"name"`
Message string
}
r.GET("/json2", func(c *gin.Context) {
data :=msg{
Name: "Go语言",
Message: "Gin框架",
}
c.JSON(http.StatusOK,data)
})
r.Run(":9090")
}
再次访问: