作者:陈明勇
个人网站:https://chenmingyong.cn
文章持续更新,如果本文能让您有所收获,欢迎关注本号。
微信阅读可搜《程序员陈明勇》。
前言
在 Go 1.24 版本中,encoding/json 包新增了 omitzero 标签,使得零值字段的忽略行为更加明确和可定制。本文将详细介绍 omitzero 标签的使用。
准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

omitzero 标签
omitzero 标签用于在将 Go 对象序列化为 JSON 时,控制哪些 零值 字段应被忽略。与 omitempty 标签不同,omitempty 忽略的是 空值 字段,而 零值 和 空值 虽然相似,但在 Go 中并不等价。例如:
- 对于
time.Time类型,零值是"0001-01-01T00:00:00Z",这并不被视为 空值。 - 对于切片字段
IntSlice []int,当其值为[]或nil时,都会被视为 空值。
为什么使用 omitzero
- 精准控制:明确地忽略零值字段,而不是空值字段。
- 定制化控制:通过
IsZero() bool方法,可以自定义字段的零值判断逻辑。
omitzero 标签的使用
package main
import (
"encoding/json"
"fmt"
"time"
)
type User struct {
Name string `json:"name,omitzero"`
Age int

最低0.47元/天 解锁文章
1290





