Go語言中可以通過使用標(biāo)準(zhǔn)庫中的encoding/json包來解析JSON數(shù)據(jù)。下面就以一個(gè)簡單的例子來演示該過程。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Education []string `json:"education"` } func main() { jsonStr := ` { "name": "張三", "age": 28, "education": [ "小學(xué)", "初中", "高中", "大學(xué)" ] } ` var p Person if err := json.Unmarshal([]byte(jsonStr), &p); err != nil { fmt.Println("解析JSON數(shù)據(jù)失敗:", err) return } fmt.Println("姓名:", p.Name) fmt.Println("年齡:", p.Age) fmt.Println("教育經(jīng)歷:", p.Education) }
在這個(gè)例子中,我們定義了一個(gè)Person結(jié)構(gòu)體,包括了Name、Age和Education三個(gè)字段。通過在結(jié)構(gòu)體字段上使用`json` tag,我們可以指定JSON數(shù)據(jù)中對(duì)應(yīng)的字段名。
在main函數(shù)中,我們定義了一個(gè)JSON字符串,然后調(diào)用json.Unmarshal函數(shù)將該JSON字符串解析成一個(gè)Person結(jié)構(gòu)體。如果解析失敗,則返回一個(gè)錯(cuò)誤。如果解析成功,則可以直接訪問Person結(jié)構(gòu)體中的各個(gè)字段。
值得注意的是,如果JSON數(shù)據(jù)中的字段名與Go語言中的字段名不一致,并且沒有通過`json` tag來指定名稱,則無法解析對(duì)應(yīng)的值。