Go语言之Gin框架,返回后台json格式信息到前端

摘要


返回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框架中,可使用gin.H实现,打开详细解析后,就可以看到就是一个map类型的接口
Go语言之Gin框架,返回后台json格式信息到前端
所以使用Gin框架代码修改
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
Go语言之Gin框架,返回后台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

打开浏览器
Go语言之Gin框架,返回后台json格式信息到前端
这种方式有一个问题,如果把结构体内的字段首字母小写
Go语言之Gin框架,返回后台json格式信息到前端

c.JSON是访问不到的,涉及到序列化问题

Go语言之Gin框架,返回后台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")

}

再次访问:
Go语言之Gin框架,返回后台json格式信息到前端

上一篇:photoshop 创意合成人物吐出的烟云


下一篇:postgreSQL jsonb上创建gin索引的两种方式