golang json marshal ignore field

在 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"}

如果您还有其他问题,欢迎继续提问。

  •