在使用Golang进行JSON处理时,有时我们需要忽略结构中的某些字段。比如在一些场景下,可能只需要将JSON序列化中的一部分字段进行反序列化,而忽略掉其他字段。
为了实现这个功能,Golang的JSON包提供了一个特殊的字段标签:`json:"-"`。将此标签应用于结构体中的字段,则在序列化时会忽略这个字段,而在反序列化时也会忽略JSON中包含这个字段的情况。
下面是一个示例:
type User struct {
Id int `json:"id"`
Name string `json:"name"`
Password string `json:"-"`
}
user := User{
Id: 123,
Name: "Tom",
Password: "123456",
}
jsonBytes, err := json.Marshal(user)
// 输出:{"id":123,"name":"Tom"}
fmt.Println(string(jsonBytes))
jsonStr := `{"id":123,"name":"Tom","password":"123456"}`
// 这里忽略了反序列化目标结构体中没有定义的字段
user2 := User{}
json.Unmarshal([]byte(jsonStr), &user2)
// 输出:{123 Tom }
fmt.Println(user2)在定义结构体的字段时,加上`json:"-"`标签即可使此字段被忽略。