- func main() {
- content:="{\"dd\":\"dd\",\"ff\":[\"lent\"]}"
- var v interface{}
- d8(content,v)
- d9(content,v)
- }
- func d9(content string,vv interface{}){
- err := json.Unmarshal([]byte(content),&vv)
- if err != nil{
- panic(err)
- } else{
- // 如果有ok做判断,强转失败就会出现为false的情况,如果为false,则不可以再使用强转失败的对象,不然会报错
- if mp,mpOk := vv.(map[string] interface{}); mpOk{
- loanStatusObj := mp["ff"]
- // 如果有ok做判断,强转失败就会出现为false的情况,如果为false,则不可以再使用强转失败的对象,不然会报错。
- // 这里已经强转会失败的。
- loanStatus := loanStatusObj.(string)
- fmt.Println(loanStatus)
- }
- }
- }
- func d8(content string,mpOk := vv.(map[string] interface{}); mpOk{
- loanStatusObj := mp["ff"]
- // 如果有ok做判断,强转失败就会出现为false的情况,如果为false,则不可以再使用强转失败的对象,不然会报错。
- // 这里已经强转会失败的,但通过loanStatusOk来避免了使用loanStatus对象
- if loanStatus,loanStatusOk := loanStatusObj.(string); loanStatusOk{
- fmt.Println(loanStatus)
- } else{
- fmt.Println("格式不对,但不会出现异常")
- fmt.Println("loanStatusOk = " + strconv.FormatBool(loanStatusOk))
- }
- }
- }
- }
代码截图:
运行结果: