为了账号安全,请及时绑定邮箱和手机立即绑定

通过 Go 过滤从 GitHub API 返回的 JSON

通过 Go 过滤从 GitHub API 返回的 JSON

Go
料青山看我应如是 2022-12-19 14:11:23
我正在尝试从 github 存储库获取最新版本信息并获取该版本中的特定资产。以下代码打印出发布标签和资产结构下的所有资产。我希望能够提取特定项目及其下载 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)}
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您快到了。请注意,json.Unmarshal确实会为您解析输出。您只需要循环遍历该Assets字段,就像这样(代替fmt.Println(data.Assets)):


    for _, asset := range data.Assets {

        if asset.Name == "ajour.exe" {

            fmt.Println(asset.BrowserDownloadURL)

        }

    }


查看完整回答
反对 回复 2022-12-19
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

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)

}


查看完整回答
反对 回复 2022-12-19
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信