版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fujian9544/article/details/85497334
1.定义
序列化:转化为键值对的形式
反序列化:键值对转化为对应规定的形式
目的:便于存储传递
2.序列化程序
Marshal参数
marshal(要转化的数字数组)
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
type ColorGroup struct {
ID int
Name string
Colors []string
}
group := ColorGroup{
ID: 1,
Name: "Reds",
Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
}
b, err := json.Marshal(group)
if err != nil {
fmt.Println("error:", err)
}
os.Stdout.Write(b)
}
// {"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}
3.反序列化
参数:unmarshal(键值对的形式,规定的转换形式)
package main
import (
"encoding/json"
"fmt"
)
type Animal struct {
Name string
Order string
site string
}
func main() {
var jsonBlob = []byte(`[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]`)
var animals []Animal
// 会按照animala的方式进行编码
err := json.Unmarshal(jsonBlob, &animals)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v", animals)
}
// [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]