目录
- 前言
- 使用默认的 Unmarshal 方法
- 自定义的 Unmarshal 方法
前言
腾讯《Go安全指南》中提到【必须】nil指针判断:进行指针操作时,必须判断该指针是否为nil,防止程序panic,尤其在进行结构体Unmarshal时。但如果每次使用都要判断一下是否 nil 防止 panic的话,那么这样的代码就会比较麻烦,这里我们可以使用一个自定义的方法,来避免这种情况。

使用默认的 Unmarshal 方法
package main
import (
"encoding/json"
"fmt"
)
type A struct {
Name string `json:"name"`
Num *int `json:"num"`
}
func main() {
var a A
err := json.Unmarshal([]byte(`{"name": "hsowan"}`), &a)
if err != nil {
panic(err)
}
fmt.Println(a.Name)
// 每次使用都要判断一下是否 nil 防止 panic
if a.Num != nil {
fmt.Println(*a.Num)
}
}
自定义的 Unmarshal 方法
当字段为 nil 时,在 Unmarshal 时进行初始化,这样就可以避免使用的时候发生 panic, 同时也不需要在使用的时候判断是否为 nil 了。
package main
import (
"encoding/json"
"fmt"
)
type A struct {
Name string `json:"name"`
Num *int `json:"num"`
}
func (a *A) UnmarshalJSON(b []byte) error {
type alias A
aux := (*alias)(a)
if err := json.Unmarshal(b, &aux); err != nil {
return err
}
if aux.Num == nil {
aux.Num = new(int)
}
return nil
}
func main() {
var a A
err := json.Unmarshal([]byte(`{"name": "hsowan"}`), &a)
if err != nil {
panic(err)
}
fmt.Println(a.Name)
fmt.Println(*a.Num)
}
参考 : 自定义Go Json的序列化方法
以上就是Go json自定义Unmarshal避免判断nil示例详解的详细内容,更多关于Go json自定义Unmarshal的资料请关注其它相关文章!
相关推荐:
SEO排位:如何通过精准策略提升网站排名,获得流量与转化,林海网络推广营销
ChatGPT与讯飞:AI语音与智能对话的完美融合,ai直角变圆角
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
SEO自己:打造属于你的数字营销利器,微信裂变营销推广软件
未来写作新模式文章撰写AI如何助力内容创作
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
如何查文章AI率?全面解析AI文章检测工具及技巧
ChatGPT常见问题汇总:解答你关于AI的一切疑惑,松鼠ai智能教适应教育
为什么“360收录”是你网站推广的必备利器,seo亚马逊
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
怎么看文章是不是AI生成的?揭秘背后的玄机与技巧
ChatGPT:引领人工智能对话新时代的智能助手,Ai shiang
SEO和品牌营销:如何通过搜索引擎优化打造品牌影响力,建邺seo软件
怎么查一篇文章是不是AI写的?你需要这几个关键方法!
SEO获取流量的必杀技:如何通过优化轻松提升网站排名,德州全网营销推广价格
如何选择适合你的AI工具?全面解析AI工具哪个好用
ChatGPT为什么访问不了了?了解背后的原因与解决方法,AI怎么拖入路径
SEO实现:如何通过SEO优化提升网站流量与排名,南京市公司网站推广
“多网建站”助力企业跨越发展,开启全新数字化时代,海南网站优化电池
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
seo需要什么能力,seo需要哪些技术 ,ai长条弯曲
SEO占位:如何在竞争激烈的市场中占得先机?,梁平区省心全网营销推广
AI软件不用登录,让你的工作更高效轻松,智能ai写作改稿怎么改
优化标题:如何让你的文章更具吸引力与点击力,整站网站优化解决方案
2025百度收录优化:提升网站排名,助力企业数字化转型,第一ai做
SEO首选:如何通过优化网站提升排名和流量,简单的网站优化软件
SEO永远,数字营销的核心力量,广州seo搜索栏内容
文章AI指令提升写作效率的智能助手
用AI创作的文章算原创吗?深度背后的逻辑与意义
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
AI代写文章:高效创作的新风尚
OpenAIGPTChatSoraOpenAIChatGPT服务在中断数小时后已恢复,ai视图线稿
Goanno跨级借鉴:推动创新与提升效率的秘密武器,崇明区智能ai艾灸费用
SEO学堂:开启数字营销新时代,全面提升网站排名与流量,文山ai营销推广方案
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
什么是seo网络推广,seo网络推广技术 ,ai写真官方
SEO查看-如何通过精确分析提升网站流量与排名,东丽网站建设价格
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
seo重点是什么,seo最重要的指标 ,ai网格怎么用
360关键:打造全方位安全保护,守护您的数字世界,ai乘bi
为什么网站要做seo,网站做seo的目的是什么 ,ai初选
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
打造高效创作体验,写文章AI软件重塑内容生产力
ChatGPT网络故障报告从协调世界时(UTC)晚上1107左右开始激增,15分钟内引发广泛关注,ai无视进化
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
文章写作AI:让创作更高效、精准的智能助手
chatai写作免费一键生成,轻松解决写作难题!,陈逗逗ai换脸在线看
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
SEO优化大全:让你的网站排名轻松破局,精准引流更高效!,274357524ai