我有这样的结构:
type MyStruct struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
然后我有一些值(可能是默认值,这意味着我不需要更新此值)作为HTTP请求数据输入。我注意到生成的JSON主体将始终包含所有三个字段(name
,age
和email
),即使我不需要更新所有字段。像这样:
{
"name":"Kevin",
"age":10,
"email":""
}
有没有办法让Marshal让JSON主体不包含所有具有相同结构的字段?例如:
{
"name":"kevin"
}
答案 0 :(得分:32)
您想使用omitempty
选项
type MyStruct struct {
Name string `json:"name,omitempty"`
Age int `json:"age"`
Email string `json:"email,omitempty"`
}
如果您希望Age
也是可选的,则必须使用指针,因为int
的零值实际上并不是空的"
type MyStruct struct {
Name string `json:"name,omitempty"`
Age *int `json:"age,omitempty"`
Email string `json:"email,omitempty"`
}