1 回答

TA貢獻1775條經驗 獲得超11個贊
由于您正在使用的 API 返回的數據可以是字符串或數字(在數組屬性中),因此您需要將其用作該數組的每個元素的類型,因為空接口(https://tour.golang.org/methods/14)在運行時適用于任何類型。bots[]interface{}
type response struct {
Bots [][]interface{} `json:"bots"`
Total int `json:"_total"`
}
然后,在循環訪問切片中的每個項目時,可以使用反射檢查其類型。
理想的做法是 API 在架構中返回數據,其中每個 JSON 數組元素都與其數組中的其他元素具有相同的 JSON 類型。這將更容易解析,特別是使用像Go這樣的靜態類型語言。
例如,API 可以返回如下數據:
{
"bots": [
{
"stringProp": "value1",
"numberProps": [
1,
2
]
}
],
"_total": 1
}
然后,您可以編寫一個表示 API 響應的結構,而無需使用空接口:
type bot struct {
StringProp string `json:"stringProp"`
NumberProps []float64 `json:"numberProps"`
}
type response struct {
Bots []bot `json:"bots"`
Total int `json:"_total"`
}
但有時您無法控制正在使用的API,因此您需要愿意以更動態的方式解析響應中的數據。如果您確實可以控制 API,則應考慮以這種方式返回數據。
- 1 回答
- 0 關注
- 78 瀏覽
添加回答
舉報