在golang中,json.Marshal()和json.Unmarshal()是處理json數(shù)據(jù)的核心函數(shù)。但是有時候我們不希望把某些字段序列化或者反序列化,這時候我們就需要使用golang的標簽來設(shè)置json。
為了在序列化或者反序列化過程中忽略某些字段,我們需要在結(jié)構(gòu)體中給這些字段附加一個特殊的標簽,名為“json”,然后在這個標簽中設(shè)置一個參數(shù),名為“-”。
type Person struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"-"` }
上面這個示例中,我們使用了“-”來忽略Address字段。
在進行序列化時,忽略掉Address字段的值:
person := Person{ Name: "張三", Age: 30, Address: "北京市", } data, _ := json.Marshal(person) fmt.Println(string(data)) //"{"name":"張三","age":30}"
在進行反序列化時,忽略掉JSON中的Address字段:
str := `{"name":"李四","age":25,"address":"上海市"}` var person Person json.Unmarshal([]byte(str), &person) fmt.Println(person) //{李四 25 }
通過給字段添加這個特殊的json標簽,我們可以很輕松地控制哪些字段需要被序列化或反序列化。這個方法非常實用,因為它可以使得你的代碼更加靈活,滿足不同的業(yè)務(wù)需求。