在Go語(yǔ)言中,我們可以使用http包來發(fā)送http請(qǐng)求,同時(shí)也可以使用encoding/json包來解析json數(shù)據(jù)。下面我們來看一下如何通過http包發(fā)送請(qǐng)求,并使用json包解析返回的json數(shù)據(jù)。
首先我們需要用http包發(fā)送GET請(qǐng)求,獲取到響應(yīng)數(shù)據(jù):
import ( "net/http" "io/ioutil" ) resp, err := http.Get("https://example.com/api/data") if err != nil { // 處理錯(cuò)誤 } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { // 處理錯(cuò)誤 }
上面的代碼會(huì)向"https://example.com/api/data"發(fā)送GET請(qǐng)求,獲取到響應(yīng)數(shù)據(jù)。然后使用ioutil包中的ReadAll函數(shù),將響應(yīng)數(shù)據(jù)讀取到data變量中。
接下來,我們需要使用json包解析返回的json數(shù)據(jù):
import "encoding/json" type Response struct { Name string `json:"name"` Value int `json:"value"` } var respData Response err = json.Unmarshal(data, &respData) if err != nil { // 處理錯(cuò)誤 }
上面的代碼中,我們定義了一個(gè)結(jié)構(gòu)體Response,用來存儲(chǔ)json數(shù)據(jù)中的"name"和"value"字段。然后使用json.Unmarshal函數(shù),將data變量中的json數(shù)據(jù)反序列化到respData變量中。
現(xiàn)在,我們就可以使用respData變量中的數(shù)據(jù)了:
fmt.Printf("Name: %s, Value: %d", respData.Name, respData.Value)
上面的代碼會(huì)輸出Response結(jié)構(gòu)體中的"name"和"value"字段。