在Go語言中,將JSON數據轉化為結構體是一種非常常見的操作。使用內置的json包,我們可以輕松地將JSON數據轉換為相應的結構體。
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Sex string `json:"sex"`
}
func main() {
jsonStr := `{"name":"Tom", "age":25, "sex":"male"}`
var p Person
err := json.Unmarshal([]byte(jsonStr), &p)
if err != nil {
fmt.Println("Unmarshal error:", err)
return
}
fmt.Println(p.Name, p.Age, p.Sex)
}
在這個例子中,我們定義了一個結構體Person,并使用json標簽標記了每個屬性的JSON名稱。然后我們使用json.Unmarshal將JSON字符串轉換為該結構體。
值得注意的是,json.Unmarshal的第二個參數應該是一個指向結構體的指針。在調用這個函數之后,我們可以像訪問普通結構體一樣訪問結構體中的字段。
除了轉換單個結構體之外,我們還可以使用json.Unmarshal將JSON數組轉換為相應的結構體切片。下面是一個示例:
type Car struct {
Model string `json:"model"`
Year int `json:"year"`
}
func main() {
jsonStr := `[{"model":"Audi", "year":2021}, {"model":"BMW", "year":2022}]`
var cars []Car
err := json.Unmarshal([]byte(jsonStr), &cars)
if err != nil {
fmt.Println("Unmarshal error:", err)
return
}
fmt.Println(cars[0].Model, cars[0].Year)
fmt.Println(cars[1].Model, cars[1].Year)
}
在這個例子中,我們定義了一個結構體Car,并將其用于表示JSON數組中的每個對象。然后我們使用json.Unmarshal將JSON字符串轉換為Car結構體的切片。
這些例子說明了如何將JSON數據轉化為結構體。如果您想訪問官方文檔來查看更多的用法和示例,請訪問https://golang.org/pkg/encoding/json/。