JSON (JavaScript Object Notation) 是一種輕量級的數據交換格式,它可以被各種語言輕易的解析和生成。在 Go 編程語言中,我們可以使用 struct 作為 JSON 對象的映射數據模型。
在 Go 中,使用 json tag 就可以定義一個 struct 的字段與 JSON 數據字段之間的映射關系。在字段名后面用 `json:"
type Person struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"address,omitempty"` }
在上面這個例子中,我們定義了一個 Person 結構體,它有三個字段:Name,Age,和 Address。在將這個結構體轉換成 JSON 數據時,我們希望 Name 字段使用 "name" 作為鍵,Age 字段使用 "age" 作為鍵,Address 字段則使用 "address" 作為鍵。我們可以通過為每個字段添加 json tag 來實現這個功能。
其中,omitempty 表示當對應的值為空時不寫入到 JSON 數據中。
我們可以使用 Go 提供的 json 包,將結構體轉換成 JSON 數據。
func main() { p := Person{ Name: "Tom", Age: 18, Address: "", } data, err := json.Marshal(p) if err != nil { log.Fatal(err) } fmt.Println(string(data)) }
上面的程序將一個 Person 結構體轉換成 JSON 數據,然后將它輸出到控制臺。輸出結果為:
{"name":"Tom","age":18}
我們看到,JSON 數據中的鍵與 struct 的字段名是不同的,這是因為我們在 struct 中使用了 json tag 定義了映射關系。
使用 json.Unmarshal 函數可以將 JSON 數據解碼成 struct 對象。同樣的,json tag 中的字段定義也將用于實現數據的解碼映射。
go json tag 簡單易用,它能夠幫助我們輕松地實現 struct 與 JSON 數據的相互轉換。