所以我試圖從具有這種格式的 JSON 中獲取鴿子的數(shù)量。該 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" } ]}已經(jīng)編寫了這段從 API 獲取 JSON 的代碼,但是由于我沒有任何 Go 經(jīng)驗(yàn),你們能幫我計(jì)算這里的鴿子數(shù)量嗎?我并不關(guān)心其他鳥類的數(shù)量。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貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
返回的 JSON 文檔中,pigeons
有一個(gè)數(shù)組,看起來該數(shù)組的長度就是鴿子的數(shù)量。因此,如果您將其解組到一個(gè)接受鴿子數(shù)組的結(jié)構(gòu)體中,您可以獲得它的長度:
type pigeons struct { Pigeons []interface{} `json:"pigeons"` }
在上面,您可以將pigeons
字段解組到接口數(shù)組,因?yàn)槟魂P(guān)心字段的內(nèi)容。如果需要處理內(nèi)容,則需要一個(gè)單獨(dú)的結(jié)構(gòu)并使用該結(jié)構(gòu)的數(shù)組。然后:
var p pigeons json.Unmarshal(body, &p) fmt.Printf("%d",len(p.Pigeons))
- 1 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報(bào)
0/150
提交
取消