在 Go 语言中使用 JSON 序列化(marshal)时,如果想要忽略某个字段,可以将这个字段的标签(struct field tag)设为 "-", 就可以忽略该字段的序列化。例如:
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Age int `json:"-"`
user := User{
ID: 1,
Name: "John",
Age: 30,
b, err := json.Marshal(user)
if err != nil {
fmt.Println(err)
fmt.Println(string(b))
输出结果为:
{"id":1,"name":"John"}
可以看到 Age 字段已经被忽略了。
另外,如果你想要序列化一个结构体的某个字段时不使用默认的字段名称,也可以在标签中设置一个自定义的名称,例如:
type User struct {
ID int `json:"user_id"`
Name string `json:"user_name"`
user := User{
ID: 1,
Name: "John",
b, err := json.Marshal(user)
if err != nil {
fmt.Println(err)
fmt.Println(string(b))
输出结果为:
{"user_id":1,"user_name":"John"}
如果您还有其他问题,欢迎继续提问。