import encoding/json
func test() {
m := make(map[string]string)
a := `{"xiaoming":"男","xiaohong":"女"}`
data ,_ := json.Marshal(a)
json.Unmarshal(data,&m)
}
以上这段代码是会报错的,cannot unmarshal string into Go value of type map[string]string
这样看是没啥问题的,但是就是行不通
但是如果改成这样子,就正常了
func test() { m := make(map[string]string) a := `{"xiaoming":"男","xiaohong":"女"}` json.Unmarshal([]byte(a),&m) }
原因是json这个包的marshal方法返回的虽然是[]byte数组,但是并非简单的普通的[]byte数组,内部还是作了一些处理的,这就导致unmarshal失败