第一章:Go语言结构体字段序列化:JSON标签配置的6个关键点
Go语言中,结构体字段通过 json
标签控制序列化行为,是实现结构体与JSON数据交互的核心机制。掌握 json
标签的使用,有助于开发者更精确地控制输出格式。
### 字段名称映射
结构体字段默认使用字段名作为JSON键名。通过 json
标签可自定义键名,例如:
type User struct {
Name string `json:"username"` // 序列化为 "username"
}
### 忽略空值字段
使用 omitempty
选项可在字段值为空时跳过序列化:
type User struct {
Email string `json:"email,omitempty"` // email为空时不输出
}
### 忽略字段
使用 -
可完全忽略字段的序列化过程:
type User struct {
Password string `json:"-"` // 序列化时忽略密码字段
}
### 控制字符串表示
使用 string
选项将数值等类型以字符串形式输出:
type Config struct {
ID int `json:"id,string"` // 输出为字符串形式的数字
}
### 嵌套结构体处理
嵌套结构体字段同样支持 json
标签配置,可递归控制内部结构:
type Address struct {
City string `json:"city"`
}
type User struct {
Addr Address `json:"address"`
}
### 多标签选项组合
多个选项可通过逗号组合使用,顺序不影响行为:
type User struct {
Token string `json:"token,omitempty,string"` // 空值忽略并以字符串输出
}