在Go語言中,經常會遇到需要解析JSON數據的情況。解析JSON數據需要從JSON字符串中獲取需要的數據。下面是一個例子:
{ "name": "小明", "age": 20, "address": { "province": "廣東", "city": "深圳" }, "hobbies": [ "游泳", "足球", "攝影" ] }
在上面的JSON數據中,有一個名為小明,年齡為20歲,地址在廣東深圳,有游泳、足球、攝影三項愛好。下面是一個簡單的示例,展示如何使用Go從JSON數據中獲取以上信息。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Address Address `json:"address"` Hobbies []string `json:"hobbies"` } type Address struct { Province string `json:"province"` City string `json:"city"` } func main() { jsonStr := `{ "name": "小明", "age": 20, "address": { "province": "廣東", "city": "深圳" }, "hobbies": [ "游泳", "足球", "攝影" ] }` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println("解析JSON數據出錯:", err) return } fmt.Printf("姓名:%s\n", person.Name) fmt.Printf("年齡:%d\n", person.Age) fmt.Printf("省份:%s\n", person.Address.Province) fmt.Printf("城市:%s\n", person.Address.City) fmt.Printf("愛好:%v\n", person.Hobbies) }
在以上代碼中,我們定義了一個Person結構體和Address結構體,其中Person結構體包含了一個Address類型和一個切片類型。在每個結構體字段上都用了json標簽,用于指定如何解析JSON數據。在main函數中,我們手動定義了一個JSON字符串,并使用json.Unmarshal()函數解析該JSON數據,將結果存儲在person變量中。最后,我們使用fmt.Printf()函數打印person結構體中的各個字段。