package main
import (
"encoding/json"
"fmt"
)
func main(){
//1定义一个json
jsonBuf:=`
{
"company": "zze",
"subjects": [
"go",
"java",
"python"
],
"isOk": true,
"price": 11.22
}
`
//1创建一个map
m:=make(map[string]interface{},4)
//2转换为map
err:=json.Unmarshal([]byte(jsonBuf),&m)
if err!=nil{
fmt.Println(err)
return
}
fmt.Println("m=",m)
//
var str string
//3 map值不能直接使用,需要判断类型后才能赋值使用
// cannot use m["company"] (type interface {}) as type string in assignment: need type assertion
//str=m["company"]
//fmt.Println("company=",str)
//4类型断言 判断类型后可以使用
for key,val:=range m{
switch data:=val.(type){
case string:
//!!!赋值使用
str=data
fmt.Printf("map[%s]的类型为string,val=%s\n",key,str)
case bool:
fmt.Printf("map[%s]的类型为bool,val=%v\n",key,data)
case float64:
fmt.Printf("map[%s]的类型为float64,val=%v\n",key,data)
case []string:
fmt.Printf("map[%s]的类型为[]string,val=%v\n",key,data)
case []interface{}:
fmt.Printf("map[%s]的类型为[]interface{},val=%v\n",key,data)
}
}
}
4.20 go json解析到map
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105347913
今日推荐
周排行