Go語言的json包可以對JSON數(shù)據(jù)進(jìn)行編碼、解碼和操作,適用于第三方API接口的數(shù)據(jù)解析。我們可以使用http包發(fā)送HTTP請求并獲取數(shù)據(jù),然后使用json.Unmarshal函數(shù)解析JSON數(shù)據(jù)。
func fetch(url string) ([]byte, error) {
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return body, nil
}
type Data struct {
ID int `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address"`
}
func parseJSON(data []byte) ([]Data, error) {
var d []Data
err := json.Unmarshal(data, &d)
if err != nil {
return nil, err
}
return d, nil
}
func main() {
url := "http://example.com/api/users"
data, err := fetch(url)
if err != nil {
log.Fatal(err)
}
users, err := parseJSON(data)
if err != nil {
log.Fatal(err)
}
for _, u := range users {
fmt.Printf("ID: %d\nName: %s\nAge: %d\nAddress: %s\n\n", u.ID, u.Name, u.Age, u.Address)
}
}
在這個示例中,我們使用fetch函數(shù)獲取API數(shù)據(jù),然后使用parseJSON函數(shù)解析JSON數(shù)據(jù)到Data結(jié)構(gòu)體數(shù)組中。Data結(jié)構(gòu)體的字段被標(biāo)記為JSON標(biāo)記,以便在解析時將JSON鍵映射到結(jié)構(gòu)體字段。
最后,我們可以使用for循環(huán)遍歷解析的數(shù)據(jù)并打印出結(jié)果。當(dāng)然,您可以根據(jù)需要進(jìn)行更改和自定義。