gin框架返回json

news/2024/11/2 17:21:59/

一、使用gin web框架开发的两种模式:

  1. 前端浏览器去请求服务器,服务器把完整的HTML文件的内容返回给前端浏览器
  2. Vue、reactor等前端框架都自己提前定义好模板,后端(服务器)只需要返回JSON格式的数据给前端框架即可,前端框架拿到数据自己会去渲染 (第二种方法用的多)

二、注意

  1. 结构体的变量是首字母小写的话,则表示它是不可导出包外的,只能在包内使用。
  2. JSON这个包要读取到结构体中的数据,所以结构体中的变量必须要是大写的。
  3. 可以通过tag灵活定制结构体的变量字段,将输出的首字母大写改成小写,但要注意结构体的变量一定要是大写的,这样json包才能够拿到这个变量数据。

三、操作JSON数据的两种方式

方法1 : 使用map

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()r.GET("/json", func(c *gin.Context) {//data := map[string]interface{}{//	"name":    "小王子",//	"message": "hello world!",//	"age":     18,//}// gin.H算是对上面map方法的一个抽象,可以说是一个快捷方式,用起来会更加方便// H is a shortcut(快捷方式) for map[string]interface{}// type H map[string]anydata := gin.H{"name":    "小王子","message": "hello world!","age":     18,}c.JSON(http.StatusOK, data)})r.Run(":9090")
}

方法2 : 利用结构体,灵活使用tag来对结构体字段做定制化操作

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()// 方法2 : 利用结构体,灵活使用tag来对结构体字段做定制化操作type msg struct {name    string `json:"name"` // 如果结构体变量首字母不是大写,就不能被JSON包获取,也就不能被返回。Message stringAge     intPhone   string `json:"phone"` // 在结构体变量首字母大写的情况下,则表示可以返回该变量,并且如果是用tag,是可以返回首字母小写的phone的,就相当于是给结构体的字段做了定制,返回json后面这个值}r.GET("/another_json", func(c *gin.Context) {data := msg{"小王子","hello golang!",18,"xxxxx12321",}c.JSON(http.StatusOK, data)})r.Run(":9090")
}

四、运行结果

运行127.0.0.1:9090/json
请添加图片描述
运行127.0.0.1:9090/another_json
请添加图片描述


http://www.ppmy.cn/news/81789.html

相关文章

设计模式 (二) 创建型设计模式系列

目录 1.单例模式 2.工厂模式 3.抽象工厂模式 4.建造者模式 5.原型模式 创建型设计模式是一组用于处理对象创建的模式,包括单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式。在这个系列中,我们将介绍这些模式的使用方法和实例。 1.单例模式…

信息收集思路

1、开发者注释 在网站前端代码中遗留的开发者注释 其中可能包含某些关键信息 ​ 💡 使用F12 、CtrlU 、view-source: 查看前端源码 ​ 3、Robots文件 爬虫协议,网站根目录存在的robots.txt文件,用于告知搜索引擎或爬虫哪些路径和页面不…

服务(第三十篇)elk-elasticsearch、logstash、kiabana

rsyslog 服务器较少时使用,rsyslog日志收集,统一存放在专门存放日志的收集器中; ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用…

化工生产制造企业实施技术变革前要问自己的 6 个问题

化工企业将新技术(大数据、人工智能、云计算、RFID、PDA、GIS)引入到业务中,通过填补技术基础设施中的空白来帮助企业团队成员更高效、更有效地完成工作,是一项卓有成就的事情。但是,企业在急于快速实施新解决方案以获…

相爱相杀的在线帮助文档语雀、Baklib、石墨文档,到底有何区别?

在线帮助文档是现代企业不可或缺的一部分,它提供了针对特定产品或服务的详细说明和指南,以帮助用户更好地理解产品或服务并解决问题。目前市面上有许多在线帮助文档工具,其中语雀、Baklib和石墨文档是比较受欢迎的三种,本文将对它…

QLocalSocket/QLocalServer基操

以下是使用QLocalSocket/QLocalServer进行进程间通信的具体用法&#xff1a; 1. 创建QLocalServer 在服务端进程中&#xff0c;需要创建一个QLocalServer对象&#xff0c;并监听客户端连接。示例代码如下&#xff1a; #include <QLocalServer> #include <QLocalSock…

​数据库原理及应用上机(实验二 SQL数据定义功能实验)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;数据库原理及应用上机实验 目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 ✨三、附加练习 ✨四、实验总结 &#x1f353;&#x1f353;前言&#xff1a; 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善&am…

C++中vector的用法

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;CSTL 前言&#xff1a;Hello各位小伙伴们好&#xff01;欢迎来到本专栏CSTL的学习&#xff0c;本专栏旨在帮助大家了解…