Go的反序列化:将json字符串 反序列化成对应数据(比如:结构体,map,切片) (Golang经典编程案例)
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
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=%v\n", err)
}
fmt.Printf("反序列化后 hero=%v hero.Name=%v\n", 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=%v\n", err)
}
fmt.Printf("反序列化后 a=%v\n", 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=%v\n", err)
}
fmt.Printf("反序列化后 slice=%v\n", slice)
}
func main() {
unmarshalSlice()
}
执行结果如下图:
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献16条内容
所有评论(0)