1. 程式人生 > >go json序列化和反序列化

go json序列化和反序列化

先理解序列化和反序列化的概念:

序列化概念理解:就是將變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,在Python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是一個意思。序列化之後,就可以把序列化後的內容寫入磁碟,或者通過網路傳輸到別的機器上。

反過來,把變數內容從序列化的物件重新讀到記憶體裡稱之為反序列化,即unpickling。

    

go json序列化?就是將go物件,例如map物件轉化成json格式字串這種操作,就是go json序列化。

go json反序列化?就是將go json字串轉換成go中 map物件的形式,就是go json反序列化。

然後再貼個GO json序列化和反序列化程式碼:

package main


import (
"encoding/json"
"fmt"
)


type Change struct {
Mid     int
Actions []string
}


type Change_slice struct {
ChgArr []Change
}

func main() {
// 物件序列化為json字串------------------------------Begin
var c1, c2 Change
var msg Change_slice

c1.Mid = 1
c1.Actions = []string{"view", "add"}
c2.Mid = 2
c2.Actions = []string{"delete", "add", "update"}
msg.ChgArr = []Change{c1, c2}
fmt.Println(msg)
b, er := json.Marshal(msg)

if er == nil {
fmt.Println(string(b))
}
// 物件序列化為json字串---------------------------------------End

// json字串反序列化為物件-------------------------------------Begin
var str string = `{"ChgArr":[{"Mid":1,"Actions":["view","add"]},{"Mid":2,"Actions":["delete","add","update"]}]}`
var msgs Change_slice
err := json.Unmarshal([]byte(str), &msgs)
if err != nil {
fmt.Println("Can't decode json message", err)
} else {
fmt.Println(msgs)
}
}

https://blog.csdn.net/zhifeiya/article/details/38523837