如何使用 GO 从外部 api 获取数据?

How to get data from external api using GO?

我有外部数据,我需要从中获取数据,这个结果来自 API 端点

{
  "data": [
    {
      "id": 30002005,
      "name": "test",
      "info": "{"Version":"7.0.484","CompanyName":"test"}",
    },
    ......
  ]
}

我需要获取这些数据并将其重新格式化为我的情况(将数据放入结构中然后执行我需要的任何操作)。

go代码:

type OldData struct {
    Id            string `json:"id"`
    Name          string `json:"name"`
}

func Index() {

    url := "https://exmaple.com/api/posts"
    var bearer = "Bearer XXXXXX"

    req, err := http.NewRequest("GET", url, nil)
    req.Header.Add("Authorization", bearer)

    client := &http.Client{}

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
    }

    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)

    if err != nil {
        log.Println(err)
    }

    var record OldData

    json.Unmarshal(body, &record)

    fmt.Println(record)
}

fmt.Println(record)的结果是{ }

更新

我创建了第三个信息:

type OldData struct {
    Id            string `json:"id"`
    Name          string `json:"name"`
    Info          string `json:"info"`
}

type Info struct {
    Version     string `json:"Version"`
    CompanyName string `json:"CompanyName"`
}

在JSON中有一个数组,名为data。您正在尝试将其解组为单个结构。尝试定义一个结构,它有一个数据字段,它是一个切片:

type OldData struct {
    Id            string `json:"id"`
    Name          string `json:"name"`
}

type OldDataItems struct {
    Data []OldData `json:"data"`
}

现在尝试解组为 OldDataItems 的一个实例。