利用json.Unmarshal转json为map类型

package main

import (
	"encoding/json"
	"fmt"
)

func main() {

	var jsonStr = `{
    "name": "WQ",
    "age": 18,
    "phone": "15858585858"}` //key-value类型可以用struct/map接收
	var m = make(map[string]string)
	if err := json.Unmarshal([]byte(jsonStr), &m);err !=nil{
		fmt.Errorf("err:%v",err)
	}
	fmt.Printf("map:%v\n",m)
	for k,v :=range m{
		fmt.Printf("map,k:%v v:%v\n",k,v)
	}

	var jsonStr2 = `["WQ","18","15858585858"]`  //json中数组如果用Unmarshal解析的话对应切片数组,key-value则解析不到slice里面
	var slice = make([]string,3)
	if err := json.Unmarshal([]byte(jsonStr2), &slice);err !=nil{
		fmt.Errorf("err:%v",err)
	}
	fmt.Printf("slice:%v\n",slice)
	for k,v :=range slice{
		fmt.Printf("slice,k:%v v:%v\n",k,v)
	}
}
//总之Unmarshal接收容器可以是结构体、map、slice,json类型需要对应才,详见Unmarshal源码注释
//map:map[age: name:WQ phone:15858585858]
//map,k:age v:
//map,k:phone v:15858585858
//map,k:name v:WQ
//slice:[WQ 18 15858585858]
//slice,k:0 v:WQ
//slice,k:1 v:18
//slice,k:2 v:15858585858