package main
import (
"encoding/json"
"fmt"
)
// 定义一个结构体
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: 500,
Birthday: "2011-11-11",
Sal: 8000.0,
Skill: "牛魔拳",
}
// 将 monster 序列化
data, err := (&monster)
if err != nil {
("序列号错误 err=%v\n", err)
}
// 输出序列化后的结果
("monster序列化后=%v\n", string(data))
}
// 将 map 进行序列化
func testMap() {
// 定义一个 map
var a map[string]interface{}
// 使用 map,需要 make
a = make(map[string]interface{})
a["name"] = "红孩儿"
a["age"] = 30
a["address"] = "洪崖洞"
// 将 a 这个 map 进行序列化
// 将 monster 序列化
data, err := (a)
if err != nil {
("序列化错误 err=%v\n", err)
}
// 输出序列化后的结果
("a map 序列化后=%v\n", string(data))
}
// 对切片进行序列化, 切片定义为 []map[string]interface{}
func testSlice() {
var slice []map[string]interface{}
var m1 map[string]interface{}
// 使用map 前,需要先 make
m1 = make(map[string]interface{})
m1["name"] = "jack"
m1["age"] = "7"
m1["address"] = "北京"
slice = append(slice, m1)
var m2 map[string]interface{}
// 使用map 前,需要先 make
m2 = make(map[string]interface{})
m2["name"] = "tom"
m2["age"] = "20"
m2["address"] = [2]string{"墨西哥", "夏威夷"}
slice = append(slice, m2)
// 将切片进行序列化操作
data, err := (slice)
if err != nil {
("序列化错误 err=%v\n", err)
}
// 输出序列化后的结果
("slice 序列化后=%v\n", string(data))
}
// 对基本数据类型序列化,对基本数据类型进行序列化意义不大
func testFloat64() {
var num1 float64 = 2345.67
// 对 num1 进行序列化
data, err := (num1)
if err != nil {
("序列化错误 err=%v\n", err)
}
// 输出序列化后的结果
("num1 序列化后=%v\n", string(data))
}
func main() {
// 演示将结构体, map , 切片进行序列
("------------------------------------------------------------------------对结构体进行序列化----------------------")
testStruct()
("------------------------------------------------------------------------对map进行序列化------------------------")
testMap()
("------------------------------------------------------------------------对切片进行序列化------------------------")
testSlice()
("------------------------------------------------------------------------对基础数据类型进行序列化------------------")
testFloat64()
}