利用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