反序列化-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]

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~