我正在嘗試從 github 存盤庫中獲取最新的發布資訊,并在該版本中獲取特定資產。以下代碼列印出發布標簽和 Asset 結構下的所有資產。我希望能夠提取特定專案及其下載 url,例如僅 ajour.exe 標記。我可以通過結構來做到這一點,還是應該決議輸出來獲取它?
func GetGithubAsset() {
testUri := "https://api.github.com/repos/ajour/ajour/releases/latest"
type githubApiData struct {
AppVersion string `json:"tag_name"`
Assets []struct {
Name string `json:"name"`
BrowserDownloadURL string `json:"browser_download_url"`
}
}
resp, err := http.Get(testUri)
if err != nil {
log.Fatal(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var data githubApiData
jsonErr := json.Unmarshal(body, &data)
if jsonErr != nil {
log.Fatal(jsonErr)
}
fmt.Println(data.AppVersion)
fmt.Println(data.Assets)
}
uj5u.com熱心網友回復:
您快到了。請注意,json.Unmarshal
確實會為您決議輸出。您需要做的就是遍歷該Assets
欄位,就像這樣(代替fmt.Println(data.Assets)
):
for _, asset := range data.Assets {
if asset.Name == "ajour.exe" {
fmt.Println(asset.BrowserDownloadURL)
}
}
uj5u.com熱心網友回復:
json:"assets"
缺少json 標簽
func GetGithubAsset() {
testUri := "https://api.github.com/repos/ajour/ajour/releases/latest"
type githubApiData struct {
AppVersion string `json:"tag_name"`
Assets []struct {
Name string `json:"name"`
BrowserDownloadURL string `json:"browser_download_url"`
} `json:"assets"`
}
resp, err := http.Get(testUri)
if err != nil {
log.Fatal(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var data githubApiData
jsonErr := json.Unmarshal(body, &data)
if jsonErr != nil {
log.Fatal(jsonErr)
}
fmt.Println(data.AppVersion)
fmt.Println(data.Assets)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/485173.html
標籤:去