Go中JSON解析时tag怎么用
发表于:2024-10-20 作者:千家信息网编辑
千家信息网最后更新 2024年10月20日,这篇文章主要介绍"Go中JSON解析时tag怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Go中JSON解析时tag怎么用"文章能帮助大家解决问题。在处
千家信息网最后更新 2024年10月20日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安全错误
数据库的锁怎样保障安全
歌曲怎么添加到数据库
广州蓝快网络技术有限公司
我的世界一直开的服务器
找电脑软件开发的工作
怀旧服服务器部落声望
vc数据库编程技术
金航数码软件开发
上海电子网络技术有哪些
毕业论文常用的数据库有哪些
环世界a17数据库
四级数据库技术好考吗
甘肃省记录小康数据库
中信软件开发社招英语要求
本地服务器如何被黑客攻击
geo中的测序数据库
大茶埠网络技术
忠县网络安全审计系统咨询辅导
华为与神州数码合作服务器
云数据库有必要建mysql吗
淮北点餐系统软件开发公司哪家好
更改软件连接的数据库连接
网络技术人员平均月薪
经典的形式化软件开发方法
s71200数据库块嵌套
苹果12提示连接服务器错误
公需网络安全知识答案
高中选修三网络技术应用
软件开发建模技术
仙桃订制软件开发公司
温州仓库管理软件开发