1 回答

TA貢獻1871條經(jīng)驗 獲得超13個贊
使用一個接口,無論您從 json 響應(yīng)中獲取的格式是什么,并將響應(yīng)解組到接口中:
func main(){
var result interface{}
if err := json.Unmarshal(jsonbytes, &result); err != nil{
fmt.Println(err)
}
}
然后使用類型斷言獲取接口下的值。但我認為在你的情況下,如果你沒有密鑰的基礎(chǔ)類型。更好的方法是使用遞歸來獲取值。
func fetchValue(value interface{}) {
switch value.(type) {
case string:
fmt.Printf("%v is an interface \n ", value)
case bool:
fmt.Printf("%v is bool \n ", value)
case float64:
fmt.Printf("%v is float64 \n ", value)
case []interface{}:
fmt.Printf("%v is a slice of interface \n ", value)
for _, v := range value.([]interface{}) { // use type assertion to loop over []interface{}
fetchValue(v)
}
case map[string]interface{}:
fmt.Printf("%v is a map \n ", value)
for _, v := range value.(map[string]interface{}) { // use type assertion to loop over map[string]interface{}
fetchValue(v)
}
default:
fmt.Printf("%v is unknown \n ", value)
}
}
Go 操場上的工作代碼
上面的代碼可以讓你獲取解析到接口中的任何類型的值。
筆記:
在 golang 中定義了當您將未知的 json 解組到接口中時。它將轉(zhuǎn)換為以下類型:
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays // slice of interface{}
map[string]interface{}, for JSON objects
nil for JSON null
- 1 回答
- 0 關(guān)注
- 113 瀏覽
添加回答
舉報