golang 序列化、反序列化
// 序列化、反序列化
package main
import (
"encoding/json"
"fmt"
)
type person struct {
Name string `json:"name"` //强制字段名小写
Age int `json:"age"`
}
func main() {
// 序列化 golang结构体 => JSON字符串
p1 := person{
Name:"小麦客",
Age:666,
}
slice_of_byte, err := json.Marshal(p1) // json.Marshal(struct_obj)
if err != nil{
fmt.Printf("当前JSON对象的内容为%s,查看结构体字段是否大写\n", string(slice_of_byte))
}else {
fmt.Println(string(slice_of_byte))
}
// 反序列化 JSON字符串 => golang结构体
json_str_obj := `{"Name":"麦子", "Age": 666}`
p2 := person{} //准备一个结构体类型的变量, 结构反序列化的值
//p2 := new(person)
//err1 := json.Unmarshal(slice_of_byte, &p2)
err1 := json.Unmarshal([]byte(json_str_obj), &p2) // json.Unmarshal(byte类型的切片, 指针类型的变量)
if err1 != nil{
fmt.Printf("error of %#v\n", err1)
}
fmt.Println(p2)
}