如何在golang中使用Json序列化
这篇文章给大家介绍如何在golang中使用Json序列化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

岳阳楼网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
go自带json库
"encoding/json" 官当自带
json-iterator
号称最快的go json解析器。跟官方的写法兼容,我目前基本都使用这个。
github.com/json-iterator/go
效率对比
ns 纳秒 op 操作
| ns/op | allocation bytes | allocation times | |
|---|---|---|---|
| std decode | 35510 ns/op | 1960 B/op | 99 allocs/op |
| easyjson decode | 8499 ns/op | 160 B/op | 4 allocs/op |
| jsoniter decode | 5623 ns/op | 160 B/op | 3 allocs/op |
| std encode | 2213 ns/op | 712 B/op | 5 allocs/op |
| easyjson encode | 883 ns/op | 576 B/op | 3 allocs/op |
| jsoniter encode | 837 ns/op | 384 B/op | 4 allocs/op |
编码案例
type Hero struct {
Name string
Age int
Birthday string
Sal float64
Skill string}序列化
hero := Hero{
Name: "小王",
Age: 20,
Birthday: "2021-02-23",
Sal: 88.02,
Skill: "技能",}jsonStu, err := json.Marshalif err != nil {
fmt.Println("生成json字}fmt.Println(string(jsonStu))反序列化
结构体 struct
str := "{\"Name\":\"张三丰\",\"Age\":98,\"Birthday\":\"2001-09-21\",\"Sal\":3800.85,\"Skill\":\"武当剑法\"}"
var hero Hero
err := json.Unmarshal([]byte(str), &hero)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}结构体数组
俩种方式,一种直接反序列化成 结构体数组,另一种反序列化为 slice,内容为map[string]interface{}
结构体数组
str := `[{"Name":"张三丰","Age":98,"Birthday":"2001-09-21","Sal":3800.85,"Skill":"武当剑法"},{"Name":"张无忌","Age":28,"Birthday":"2004-09-21","Sal":300.85,"Skill":"乾坤大挪移"}]`
var hero []Hero
err := json.Unmarshal([]byte(str), &hero)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 hero=%v", hero)slice
str := `[{"Name":"张三丰","Age":98,"Birthday":"2001-09-21","Sal":3800.85,"Skill":"武当剑法"},{"Name":"张无忌","Age":28,"Birthday":"2004-09-21","Sal":300.85,"Skill":"乾坤大挪移"}]`
//定义一个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)关于如何在golang中使用Json序列化就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
新闻名称:如何在golang中使用Json序列化
URL链接:http://www.jxjierui.cn/article/jpijig.html


咨询
建站咨询
