Go語言是一種非常適合處理HTTP請求的語言,它內置了很多與網絡相關的包,其中最常用的就是net/http包。該包支持了所有標準的HTTP請求方法,包括GET、POST、PUT、PATCH、DELETE等,而且在處理JSON數據時也有非常方便的api。
在進行HTTP請求時需要創建一個http.Client,然后調用它的Do方法,可以將請求的結果保存在http.Response結構中。如果請求成功,我們可以在Response結構中獲取到響應的JSON數據,然后使用encoding/json包里的Unmarshal方法將其解析成程序中的數據結構。
package main import ( "encoding/json" "fmt" "net/http" ) type User struct { ID int `json:"id"` Name string `json:"name"` Username string `json:"username"` } func main() { res, err := http.Get("https://jsonplaceholder.typicode.com/users/1") if err != nil { fmt.Println(err) return } defer res.Body.Close() var user User err = json.NewDecoder(res.Body).Decode(&user) if err != nil { fmt.Println(err) return } fmt.Printf("ID: %d\nName: %s\nUsername: %s\n", user.ID, user.Name, user.Username) }
在上面的例子中,我們使用了第三方的API接口,從網絡上獲得了一個用戶的JSON數據。然后定義了一個User結構,該結構中與JSON數據對應的字段用json標簽來注釋,然后使用http.Get方法發送請求,并將響應保存在http.Response結構中。最后創建了一個User類型的變量,然后使用Unmarshal方法從Response結構中獲取JSON數據并解析到程序中的數據結構中。最終打印了用戶的信息。