反序列化-Map反序列化
Map反序列化
准备待反序列化的json字符串。
str := `{"addr":"北京朝阳","age":27,"name":"大晕头","sal":3141.59}`
定义map变量,类型必须与之前序列化的类型完全一致。
var m map[string]interface{}
不需要使用make函数给m初始化,开辟空间。这是因为,在反序列化函数 Unmarshal() 中会判断传入的参数2,如果是map类型数据,会自动开辟空间。相当于是Unmarshal() 函数可以帮助我们做make操作。
但!传参时需要注意,Unmarshal的第二个参数,是用作传出,返回结果的。因此必须传m的地址值。
json.Unmarshal([]byte(str), &m)
示例代码:
// 封装函数测试map反序列化
func mapDeserial() {
// 准备反序列化的json字符串
str := `{"addr":"北京朝阳","age":27,"name":"大晕头","sal":3141.59}`
// 定义map变量
var m map[string]interface{}
err := json.Unmarshal([]byte(str), &m)
if err != nil {
fmt.Println("Unmarshal err:", err)
return
}
// 查看反序列化结果
fmt.Println("反序列化后:m =", m)
}
func main() {
// 测试map反序列化
mapDeserial()
}
输出结果为:
反序列化后:m = map[addr:北京朝阳 age:27 name:大晕头 sal:3141.59]