Go中JSON解析时tag怎么用
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"Go中JSON解析时tag怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Go中JSON解析时tag怎么用"文章能帮助大家解决问题。在处
千家信息网最后更新 2025年11月13日Go中JSON解析时tag怎么用
这篇文章主要介绍"Go中JSON解析时tag怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Go中JSON解析时tag怎么用"文章能帮助大家解决问题。
在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有反引号括起来的内容。形如:
type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` }struct成员变量标签(Tag)说明
要比较详细的了解这个,要先了解一下golang的基础,在golang中,命名都是推荐都是用驼峰方式,并且在首字母大小写有特殊的语法含义:包外无法引用。但是由经常需要和其它的系统进行数据交互,例如转成json格式,存储到mongodb啊等等。这个时候如果用属性名来作为键值可能不一定会符合项目要求。
所以呢就多了反引号的内容,在golang中叫标签(Tag),在转换成其它数据格式的时候,会使用其中特定的字段作为键值。例如上例在转成json格式:
u := &User{UserId: 1, UserName: "tony"} j, _ := json.Marshal(u) fmt.Println(string(j))// 输出内容:// {"user_id":1,"user_name":"tony"}// 如果在属性中不增加标签说明,则输出:// {"UserId":1,"UserName":"tony"}// 可以看到直接用struct的属性名做键值。// ==其中还有一个bson的声明,这个是用在将数据存储到mongodb使用的==struct成员变量标签(Tag)获取
那么当我们需要自己封装一些操作,需要用到Tag中的内容时,咋样去获取呢?这边可以使用反射包(reflect)中的方法来获取:完整代码如下:
package mainimport ( "encoding/json" "fmt" "reflect")func main() { type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` } // 输出json格式 u := &User{UserId: 1, UserName: "tony"} j, _ := json.Marshal(u) fmt.Println(string(j)) // 输出内容:{"user_id":1,"user_name":"tony"} // 获取tag中的内容 t := reflect.TypeOf(u) field := t.Elem().Field(0) fmt.Println(field.Tag.Get("json")) // 输出:user_id fmt.Println(field.Tag.Get("bson")) // 输出:user_id}自定义tag
type User struct { UserId int `json:"user_id" bson:"user_id" test:"test"` UserName string `json:"user_name" bson:"user_name"` }获取tag中test的值
// 获取tag中的内容typeof := reflect.TypeOf(u)field := typeof.Elem().Field(0)fmt.Println(field.Tag.Get("json"))// 输出:user_idfmt.Println(field.Tag.Get("bson"))// 输出:user_idfmt.Println(field.Tag.Get("test"))// 输出:test关于"Go中JSON解析时tag怎么用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
输出
内容
格式
属性
时候
标签
数据
知识
变量
引号
成员
方法
行业
存储
不同
实用
特殊
代码
右侧
含义
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
闵行区信息化数据库价钱
jsp读取服务器文件并显示
学生宿舍数据库
北京拓林思软件开发公司
王者荣耀服务器100区
腾讯2019网络安全报告
香肠派对维护服务器在哪里
山东智矩网络技术
数据库网络安全技术与应用
古风网络安全标语
mhp3水漠林数据库
sql导入数据库显示外部表
海军基地 网络安全
idea 往数据库插入数据
sql数据库论坛
星际家园哪个服务器好玩
网络安全的作文1篇
学计算机网络技术以后做什么
服务器的生存日常
个大数据平台的数据库
深圳网络安全首选柚米科技
邯郸市坤玥网络技术有限公司
什么是金融软件开发
数据库的操作方式有哪两种
ibm刀片服务器型号
软件开发类的专业课程
关于软件开发的网站
网络安全cr
广西格林根软件开发有限公司
工信部网络安全事件应急预案