序列化
package main
import (
"encoding/json"
"fmt"
)
/**
json 序列化是指,将有key-value 结构的数据类型(结构、map、切片)序列化程json字符串的操作
*/
// 1.定义一个结构体 序列化
type Monster struct {
Name string `json:"monster_name"`
Age int `json:"monster_age"`
Birthday string
Sal float64
Skill string
}
func testStruct(){
monster :=Monster{
Name:"水牛精",
Age:400,
Birthday:"1520-1-1",
Skill:"变牛",
}
// 将monster 序列化
data,err:=json.Marshal(&monster)
if err != nil{
fmt.Println("序列号 err=%v\n",err)
}
//输出序列后后的结果
fmt.Printf("monster 序列化后 = %v\n",string(data))
}
func main() {
//
testStruct()
//2. 将map 进行序列化
// 定义一个map
var a map [string]interface{}
// 使用map,需要make
a = make(map[string] interface{})
a["address"]="祖安大街88号"
a["age"]=56
a["name"]="任老爷"
data,err := json.Marshal(a)
if err !=nil{
fmt.Printf("序列化错误 err=%v",err)
}
// 输入序列化后的 结果
fmt.Printf("monster 序列化后=%v\n",string(data))
// 演示切片进行序列化,
fmt.Println("-------------------------------------------------------------")
testSlice()
}
func testSlice() {
var slice [] map[string] interface{}
var m1 map [string] interface{}
// 使用map前 先make
m1 = make(map[string]interface{})
m1 ["name"] = "Tom"
m1 ["age"]="7"
m1 ["address"]="北京"
slice = append(slice,m1)
var m2 map[string] interface{}
// 使用map 前 ,需要线make
m2 = make(map[string] interface{})
m2["name"] = "Tumrp"
m2["age"] = "65"
m2 ["address"] = [3] string{"伦敦","上海","北京"}
slice = append(slice,m2)
data,err:=json.Marshal(slice)
if err !=nil{
fmt.Printf("序列化错误 err=%v\n",err)
}
//输出序列化后的结果
fmt.Printf("slice 序列化后=%v\n",string(data))
}
控制台输出结果