json的序列化【本质是转化为可传输的二进制】
type Monster struct { Name string //如果改成小写,序列化时跨包会丢掉此字段 Age int `json:"age"` //代表json过后的重命名 Score float64 } func testStruct() { monster := Monster{Name: "牛魔王", Age: 300, Score: 95} data, err := json.Marshal(&monster) //返回的是[]byte切片 if err != nil { fmt.Printf("序列化错误err=%v", err) } //序列化结构体={"Name":"牛魔王","age":300,"Score":95} fmt.Printf("序列化结构体=%v\n", string(data)) }
反序列化【接收网络传输过来的二进制数据转化为语言可操作的数据类型】
func unmarshalStruct() { var monster Monster str := "{\"Name\":\"牛牛\",\"age\":330,\"Score\":92}" err := json.Unmarshal([]byte(str), &monster)#将二进制流转为go语言可以识别的对象 if err != nil { fmt.Printf("unmarshal err=%v", err) } fmt.Printf("反序列化后:%v\n", monster) }
本文来自博客园,作者:topass123,转载请注明原文链接:https://www.cnblogs.com/topass123/p/16989623.html