Go json怎么自定义Unmarshal避免判断nil
本篇内容主要讲解“Go json怎么自定义Unmarshal避免判断nil”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go json怎么自定义Unmarshal避免判断nil”吧!
使用默认的 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怎么自定义Unmarshal避免判断nil”有了更深的了解,不妨来实际操作一番吧!这里是蜗牛博客网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论