Go json omitempty如何实现可选属性
更新时间:2024年09月17日 09:38:03 作者:wecode66
在Go语言中,使用`omitempty`可以帮助我们在进行JSON序列化和反序列化时,忽略结构体中的零值或空值,本文介绍了如何通过将字段类型改为指针类型,并在结构体的JSON标签中添加`omitempty`来实现这一功能,例如,将float32修改为*float32
Go json omitempty实现可选属性
有以下 json 字符串
{ "width":256, "height":256, "size":1024 "url":"wecode.fun/bucket/photo/a.jpg", "type":"JPG" }
对应 go 的结构体
type MediaSummary struct { Width int `json:"width"` Height int `json:"height"` Size int `json:"size"` URL string `json:"url"` Type string `json:"type"` Duration float32 `json:"duration"` }
反序列化后,得到的 json 结构是
{ "width":256, "height":256, "size":1024 "url":"wecode.fun/bucket/photo/a.jpg", "type":"JPG", "duration":0.0 }
这里的 “duration”:0.0 并不是我们需要的。
要去掉这个,可以借助 omitempty 属性。
即:
type MediaSummary struct { Width int `json:"width"` Height int `json:"height"` Size int `json:"size"` URL string `json:"url"` Type string `json:"type"` Duration *float32 `json:"duration,omitempty"` }
注意,上述有定义2个改动:
- 1、duration 添加了 omitempty
- 2、float32 修改为 指针类型 *float32
这样做的原因可以参考链接:
上述修改后,反序列化的结果是:
{ "width":256, "height":256, "size":1024 "url":"wecode.fun/bucket/photo/a.jpg", "type":"JPG" }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
在golang xorm中使用postgresql的json,array类型的操作
这篇文章主要介绍了在golang xorm中使用postgresql的json,array类型的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-04-04Go Web开发之Gin多服务配置及优雅关闭平滑重启实现方法
这篇文章主要为大家介绍了Go Web开发之Gin多服务配置及优雅关闭平滑重启实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2024-01-01
最新评论