golang中的struct json tag可以幫助我們更方便地將我們的結(jié)構(gòu)體轉(zhuǎn)化為json格式。
type Person struct { Name string `json:"name"` Age int `json:"age"` Gender string `json:"gender"` }
上面的代碼中,我們給每個(gè)結(jié)構(gòu)體的字段加上了一個(gè)json
tag。這個(gè)tag告訴golang編譯器,我們想要將這個(gè)字段序列化成json格式時(shí),應(yīng)該使用name
、age
和gender
作為鍵名。
現(xiàn)在我們來看一下如何將一個(gè)Person實(shí)例轉(zhuǎn)化為json:
func main() { p := Person{ Name: "Alice", Age: 25, Gender: "female", } b, err := json.Marshal(p) if err != nil { fmt.Println(err) return } fmt.Println(string(b)) }
上面的代碼中,我們調(diào)用了json.Marshal
函數(shù)將Person實(shí)例p
轉(zhuǎn)化為了json格式的字節(jié)數(shù)組b
。最后我們使用fmt.Println
函數(shù)將這個(gè)字節(jié)數(shù)組打印出來。輸出結(jié)果如下:
{"name":"Alice","age":25,"gender":"female"}
可以看到,我們的Person實(shí)例已經(jīng)成功被轉(zhuǎn)化為了json格式。
另外,如果你想讓某個(gè)字段在json中不出現(xiàn),只需要在這個(gè)字段的json tag中加上-
即可:
type Person struct { Name string `json:"name"` Age int `json:"-"` Gender string `json:"gender"` }
上面的代碼中,我們將Age
字段的json tag設(shè)置為了-
,表示在json中不顯示這個(gè)字段。
總之,使用struct json tag可以讓我們更加靈活地將我們的結(jié)構(gòu)體轉(zhuǎn)化為json格式。希望本文能對(duì)你有所幫助。