社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
json反序列化是指,将json字符串 反序列化成对应数据(比如:结构体,map,切片)
下面分别将struct,map,slice 反序列化成对应数据。
案例1:将json字符串,反序列化成struct
package main
import (
"encoding/json"
"fmt"
)
type Hero struct {
Name string
Age int
Birthday string
Sal float64
Skill string
}
//将json字符串,反序列化成struct
func unmarshalStruct() {
//说明:str在项目的开发中,是通过网络传输获取到,或者读取文件获取到
str := "{"Name":"张三丰","Age":98,"Birthday":"2001-09-21","Sal":3800.85,"Skill":"武当剑法"}"
//定义一个Hero实例
var hero Hero
err := json.Unmarshal([]byte(str), &hero)
if err != nil {
fmt.Printf("unmarshal err=%vn", err)
}
fmt.Printf("反序列化后 hero=%v hero.Name=%vn", hero, hero.Name)
}
func main() {
unmarshalStruct()
}
执行结果如下图所示:
案例2:将json字符串,反序列化成map
package main
import (
"encoding/json"
"fmt"
)
//将json字符串,反序列化成map
func unmarshalMap() {
str := "{"name":"张无忌","age":18,"address":"武当剑法"}"
//定义一个map
var a map[string]interface{}
//注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数
err := json.Unmarshal([]byte(str), &a)
if err != nil {
fmt.Printf("unmarshal err=%vn", err)
}
fmt.Printf("反序列化后 a=%vn", a)
}
func main() {
unmarshalMap()
}
执行结果如下:
案例3:将json字符串,反序列化成slice
package main
import (
"encoding/json"
"fmt"
)
//将json字符串,反序列化成切片
func unmarshalSlice() {
str := "[{"address":"北京","age":8,"name":"tom"}," +
"{"address":["河南","上海"],"age":18,"name":"mary"}]"
//定义一个slice
var slice []map[string]interface{}
//注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数
err := json.Unmarshal([]byte(str), &slice)
if err != nil {
fmt.Printf("unmarshal err=%vn", err)
}
fmt.Printf("反序列化后 slice=%vn", slice)
}
func main() {
unmarshalSlice()
}
执行结果如下图:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!