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