marshal unmarshal

版权声明:本文为博主原创文章,未经博主允许不得转载。 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}]

猜你喜欢

转载自blog.csdn.net/fujian9544/article/details/85497334