返回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

在这里插入图片描述

所以使用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

在这里插入图片描述

第二种方法,使用结构体方式,这种方式用途最多,最常用

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")

}

再次访问:

在这里插入图片描述