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

如何从 API 获取 JSON 并计算鸽子的数量

如何从 API 获取 JSON 并计算鸽子的数量

Go
慕姐8265434 2022-05-23 16:21:17
所以我试图从具有这种格式的 JSON 中获取鸽子的数量。这个 JSON 包含很多鸟类类型,每一种都由他的颜色和最后联系方式定义:{    "url": "http://localhost:9001/",    "pigeons": [        {            "color": "white",            "lastContact": "2020-03-23T14:46:20.806Z"        },        {            "color": "grey",            "lastContact": "2020-03-23T14:46:20.807Z"        }    ],    "parrots": [        {            "color": "green",            "lastContact": "2020-03-23T14:46:20.806Z"        }    ]}已经做了这段从 API 获取 JSON 的代码,但是由于我没有任何 Go 经验,你们能帮我从这里数一下鸽子的数量吗?我真的不在乎其他鸟类的数量。package mainimport (    "encoding/json"    "fmt"    "io/ioutil"    "log"    "net/http"    "time")type pigeons struct {    Number int `json:"something"`}func main() {    url := "http://localhost:9001"    birdsClient := http.Client{        Timeout: time.Second * 2, // Maximum of 2 secs    }    req, err := http.NewRequest(http.MethodGet, url, nil)    if err != nil {        log.Fatal(err)    }    res, getErr := birdsClient.Do(req)    if getErr != nil {        log.Fatal(getErr)    }    body, readErr := ioutil.ReadAll(res.Body)    if readErr != nil {        log.Fatal(readErr)    }    pigeons1 := pigeons{}    jsonErr := json.Unmarshal(body, &pigeons1)    if jsonErr != nil {        log.Fatal(jsonErr)    }    fmt.Println(pigeons1.Number)}
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

在返回的 JSON 文档中,pigeons是一个数组,看起来该数组的长度是鸽子的数量。因此,如果您将其解组为一个接受鸽子数组的结构,您可以获得它的长度:


type pigeons struct {

   Pigeons []interface{} `json:"pigeons"`

}

上面,您可以将pigeons字段解组为接口数组,因为您不关心字段的内容。如果您需要处理内容,则需要一个单独的结构并使用它的数组。然后:


var p pigeons

json.Unmarshal(body, &p)

fmt.Printf("%d",len(p.Pigeons))


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

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