微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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类型的接口

在这里插入图片描述

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

}

再次访问:

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐