如何用golang源码分析json.Marshal
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,如何用golang源码分析json.Marshal,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Golang的结构体可以增加类似于J
千家信息网最后更新 2025年02月07日如何用golang源码分析json.Marshal
如何用golang源码分析json.Marshal,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Golang的结构体可以增加类似于Java里面@JsonProperty("id")
注释。在结构体里面通过反引号包含的字符串被称为Tag。
type Cyeam struct {
Url string `json:"url"`
Other string `json:"-"`
}
在Tag里加入对json的Tag的定义,就可以实现对输出的格式控制。而且,如果json字段的Tag定义为-
的话,不会被解析。
这么强大的功能,借助reflect
包,实现起来也不难。
c := Cyeam{Url: "blog.cyeam.com", Other: "..."}
var t reflect.Type
t = reflect.TypeOf(c)
var v reflect.Value
v = reflect.ValueOf(c)
json := "{"
for i := 0; i < t.NumField(); i++ {
if t.Field(i).Tag.Get("json") != "-" {
json += "\"" + t.Field(i).Tag.Get("json") + "\":\"" + v.FieldByName(t.Field(i).Name).String() + "\""
}
}
json += "}"
fmt.Println(json)
{"url":"blog.cyeam.com"}
对于每一个对象,都能够得到它的类型Type以及值Value。t.NumField()
方法能够得到结构体内包含值的数目,t.Field(i)
能够得到索引值处变量的值Value。通过这两个方法,就能够对结构体变量进行遍历。t.Field(i).Tag.Get("json")
可以获取当前字段的Tag,并且从中获取json的Tag值。如此一来,就能够完成结构体的遍历和最后JSON流的拼接生成。
关于如何用golang源码分析json.Marshal问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
结构
分析
方法
问题
源码
变量
字段
更多
帮助
解答
强大
易行
如此一来
简单易行
一来
两个
从中
内容
功能
字符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
smba服务器
多媒体数据库加载失败
安徽点钻机点胶软件开发
网络安全法英文版本
gis地理信息用什么数据库
宝山区市场软件开发是什么
工时数据库
创宇互联网科技有限公司
创建数据库账号要考虑
设计类软件开发建议
文件服务器管理计划
30转行软件开发
有看头db数据库
移动和联通是租的电信的服务器吗
pop smtp服务器
软件开发net方向就业前景
服务器监控 硬盘
网络安全审查办法自什么时起实行
朔州软件开发解决方案
江西综合软件开发成交价
配置Sun服务器网络管理口
数据库中把Null写成1
服务器3d模型
黄岛区微信小程序软件开发
金属字符数据库
网络实行网络安全
反向代理服务器的部署
阿尔法蛋连接网络提示服务器忙
大学vfp数据库实践教程
数据库系统的运行与