4.20 go json解析到map

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)
		
		}	
	}
}
发布了124 篇原创文章 · 获赞 94 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/h4241778/article/details/105347913