我怎樣才能將來自https://api.twitchinsights.net/v1/bots/online的JSON回應決議為Go中的一個陣列,并對每個條目進行迭代?
我不明白這個結構,因為沒有鍵,只有值......
誰能幫助我?
誰能幫幫我,解釋一下這是怎么一回事?
我已經對它進行了映射,但是我得到了類似于
的東西。map[_total:216 bots:[[otherttvviewer 67063 1。 632071051e 09] [defb 26097 1.632071051e 09] [commanderroot 17531 1.632071048e 09] [ apparentlyher 16774 1.63207105e 09] ...
但是我不能迭代地圖。
uj5u.com熱心網友回復:
因為你所使用的API回傳的資料可能是一個字串或一個數字(在陣列屬性bots中),你需要使用[]interface{}作為該陣列中每個元素的型別,因為空介面(https://tour.golang.org/methods/14)在運行時對任何型別都有效。
type response struct {
博茨[][]interface{}。`json: "bots"`{/span>
總數 int `json:"_total"`
}
然后,當你遍歷切片中的每個專案時,你可以使用反射檢查其型別。
最理想的情況是,API 能夠以一種模式回傳資料,其中每個 JSON 陣列元素都具有與其陣列中其他元素相同的 JSON 型別。這將更容易進行決議,尤其是使用 Go 這樣的靜態型別語言。
例如,API可以回傳這樣的資料:
{}。
"bots": []。
{
"stringProp": "value1",
"numberProps": [
1,
2
]
}
],
"_total": 1
}
然后,你可以寫一個代表API回應的結構,而不使用空的介面:
。type bot struct {
StringProp string `json: "stringProp"`/span>
NumberProps []float64 `json: "numberProps"`/span>
}
type response struct {
Bots []bot `json: "bots"`
總數 int `json:"_total"`
}
但有時你無法控制你所使用的API,所以你需要愿意以一種更動態的方式決議回應中的資料。如果你確實控制了 API,你應該考慮以這種方式回傳資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322799.html
標籤:
