如何在元帅中省略结构的条件字段
短信预约 -IT技能 免费直播动态提醒
小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《如何在元帅中省略结构的条件字段》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
问题内容存在mystruct结构。
type mystruct struct {
code int `json:"code"`
flags uint8 `json:"flags"`
optionfield int `json:",omitempty"`
}
以下代码将其转换为 json。
f := MyStruct{Code:500, OptionField:41}
r, _ := json.Marshal(f)
fmt.Println(string(r)
我需要“optionfield”是可选的。有时它应该存在于 json 中,其值为 [0, 1, 2, 3, ] 之一。而在其他时间它应该从 json 中排除。
我的问题是:omitempty当值为零时会排除它,而int的默认值为零。有什么方法可以省略条件中的字段(例如:如果值为-1则省略)。或者有什么办法可以做到。
解决方案
您可以使用 *int
代替 int 并将指针值设置为 nil 以忽略此操作。
package main
import (
"encoding/json"
"fmt"
)
type MyStruct struct {
Code int `json:"Code"`
Flags uint8 `json:"Flags"`
OptionField *int `json:",omitempty"`
}
func format(s MyStruct) string {
r, _ := json.Marshal(s)
return string(r)
}
func main() {
f := MyStruct{Code: 500, Flags: 10, OptionField: new(int)}
fmt.Println(format(f)) // {"Code":500,"Flags":10,"OptionField":0}
f.OptionField = nil
fmt.Println(format(f)) // {"Code":500,"Flags":10}
}
理论要掌握,实操不能落!以上关于《如何在元帅中省略结构的条件字段》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341