猿问

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

所以我试图从具有这种格式的 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 main


import (

    "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)

}


胡子哥哥
浏览 110回答 1
1回答

繁星淼淼

返回的 JSON 文档中,pigeons有一个数组,看起来该数组的长度就是鸽子的数量。因此,如果您将其解组到一个接受鸽子数组的结构体中,您可以获得它的长度:type pigeons struct {    Pigeons []interface{} `json:"pigeons"`    }在上面,您可以将pigeons字段解组到接口数组,因为您不关心字段的内容。如果需要处理内容,则需要一个单独的结构并使用该结构的数组。然后:var p pigeons json.Unmarshal(body, &p) fmt.Printf("%d",len(p.Pigeons))
随时随地看视频慕课网APP

相关分类

Go
我要回答