请问下:
下面的示例代码中,为什么第二种断言才能成功,第一种断言不成功?
```
json1 := `[{"aa":"astr1"},{"aa":"bstr1"}]`
var j1 []interface{}
json.Unmarshal([]byte(json1), &j1)
for k, v := range j1 {
fmt.Println(k, reflect.TypeOf(v).String())
if v2, ok := v.(map[string]string); ok {
println("断言成功")
println(v2["aa"])
} else if v2, ok := v.(map[string]interface{}); ok {
fmt.Println("键值为interface:")
fmt.Println(v2["aa"])
} else {
fmt.Println("失败:")
}
}
```
手册里面写的很明天,对objects是map[string]interface{}
```
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null
```
https://golang.google.cn/pkg/encoding/json/#Unmarshal
#1
更多评论
![断言222.png](https://static.studygolang.com/191002/68bf14c8b7e4476e0860ededbb8cda76.png)
应该是因为每次断言只能断言一个点!!
#2