总结

1. omitempty是省略的意思

2. json中字段若有omitempty标记,则这个字段为空时,json序列化为string时不会包含该字段

3. json中字段若没有omitempty标记,则这个字段为空时,json序列化为string时会包含该字段

看代码

package main
import (
"encoding/json"
"fmt"
)
// 学生信息
type Student struct {
Id int `json:"id"`
Name string `json:"name,omitempty"`
}
func main() {
// 测试第一个(Name字段赋值,序列化后这个字段是存在的)
s1 := Student{
Id:1,
Name:"张三",
}
data1, _ := json.Marshal(s1)
fmt.Printf("%s\n", data1)

// 测试第二个(Id字段不赋值,序列化后Id字段仍然存在;Name字段不赋值,序列化后这个字段就不存在了)
s2 := Student{
//Id:2,
//Name:"李四",
}
data2, _ := json.Marshal(s2)
fmt.Printf("%s\n", data2)
}

实验如下

json中omitempty字段的使用_json