// code_032_json_unmarshal_to_interface project main.go
package main
import (
"encoding/json"
"fmt"
)
func main() {
b := []byte(`{
"company":"tianmei",
"subjects":[
"Go",
"C++",
"Python",
"Test"
],
"isok":true,
"price":666.666
}`)
//备注:subjects:["Test",]后面没有元素了,还有逗号会报错的。
var t interface{}
err := json.Unmarshal(b, &t)
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(t)
//使用断言判断类型
m := t.(map[string]interface{})
for k, v := range m {
switch vv := v.(type) {
case string:
fmt.Println(k, "is string", vv)
case int:
fmt.Println(k, "is int", vv)
case float64:
fmt.Println(k, "is float64", vv)
case bool:
fmt.Println(k, "is bool", vv)
case []interface{}: //slice类型的元素为interface{}接收
fmt.Println(k, "is an array:")
for i, u := range vv {
fmt.Println(i, u)
}
default:
fmt.Println(k, "is of a type I don't know to handle")
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。