总结
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)
}
实验如下