Golang语言之Json序列化
2009 年 3 月 16 日
Json序列化 指,将具有key-value(键 -> 值)结构的数据类型,例如:go语言中的map, slice,struct…序列化成json格式的字符串的操作。json是一种主流的数据传输格式,灵活轻便…
需要导入一个包 “encoding/json”
上代码
Golang – struct 结构体序列化代码段
//定义一个简单的结构体 Monster type Monster struct { Name string Age int Birthday string Sal float64 Skill string } //写一个 testStruct()结构体的序列化方法 func testStruct() { monster := Monster{ Name: "牛魔王", Age: 500, Birthday: "2019-10-27", Sal: 10000.01, Skill: "牛魔拳", } // 将Monster结构体序列化 data, err := json.Marshal(&monster) if err != nil { fmt.Printf("序列化错误 err is %v", err) } //输出序列化结果 fmt.Printf("monster序列化后 = %v", string(data)) }
Golang – map序列化代码段
// map序列化 func testMap() { //定义一个map var a map[string]interface{} //使用map之前 必须make一下 a = make(map[string]interface{}) a["name"] = "红孩儿" a["age"] = 18 a["address"] = "重庆洪崖洞" // 将a map结构体序列化 data, err := json.Marshal(a) if err != nil { fmt.Printf("序列化错误 err is %v", err) } //输出序列化结果 fmt.Printf("map序列化后 = %v", string(data)) }
Golang – slice序列化代码段
// slice进行序列化 func testSlice() { var slice []map[string]interface{} // 定义了一个切片,里面是map格式 map[string]interface{} var m1 map[string]interface{} //定义切片中的第一个map M1 m1 = make(map[string]interface{}) m1["name"] = "Matt" m1["age"] = 36 m1["address"] = [2]string{"重庆沙坪坝", "上海"} slice = append(slice, m1) var m2 map[string]interface{} //定义切片中的第2个map M2 m2 = make(map[string]interface{}) m2["name"] = "damon" m2["age"] = 36 m2["address"] = "沙坪坝" slice = append(slice, m2) // 将slice进行序列化 data, err := json.Marshal(slice) if err != nil { fmt.Printf("序列化错误 err is %v", err) } //输出序列化结果 fmt.Printf("slice序列化后 = %v", string(data)) }
完整代码供参考
package main import ( "encoding/json" "fmt" ) // Json序列化指,将具有key-value(键 -> 值)结构的数据类型,例如:go语言中的map, slice,struct...序列化成json格式的字符串的操作 //定义一个简单的结构体 Monster type Monster struct { Name string Age int Birthday string Sal float64 Skill string } //写一个 testStruct()结构体的序列化方法 func testStruct() { monster := Monster{ Name: "牛魔王", Age: 500, Birthday: "2019-10-27", Sal: 10000.01, Skill: "牛魔拳", } // 将Monster结构体序列化 data, err := json.Marshal(&monster) if err != nil { fmt.Printf("序列化错误 err is %v", err) } //输出序列化结果 fmt.Printf("monster序列化后 = %v", string(data)) } // map序列化 func testMap() { //定义一个map var a map[string]interface{} //使用map之前 必须make一下 a = make(map[string]interface{}) a["name"] = "红孩儿" a["age"] = 18 a["address"] = "重庆洪崖洞" // 将a map结构体序列化 data, err := json.Marshal(a) if err != nil { fmt.Printf("序列化错误 err is %v", err) } //输出序列化结果 fmt.Printf("map序列化后 = %v", string(data)) } // slice进行序列化 func testSlice() { var slice []map[string]interface{} // 定义了一个切片,里面是map格式 map[string]interface{} var m1 map[string]interface{} //定义切片中的第一个map M1 m1 = make(map[string]interface{}) m1["name"] = "Matt" m1["age"] = 36 m1["address"] = [2]string{"重庆沙坪坝", "上海"} slice = append(slice, m1) var m2 map[string]interface{} //定义切片中的第2个map M2 m2 = make(map[string]interface{}) m2["name"] = "damon" m2["age"] = 36 m2["address"] = "沙坪坝" slice = append(slice, m2) // 将slice进行序列化 data, err := json.Marshal(slice) if err != nil { fmt.Printf("序列化错误 err is %v", err) } //输出序列化结果 fmt.Printf("slice序列化后 = %v", string(data)) } func main() { //结构体, map, slice进行序列化 testStruct() testMap() testSlice() }
看结果
struct, map, slice 的json序列化结果
请注意
本文部分内容,图片,及视频源于网络转载, 不以盈利为目的,不构成商业目的使用, 仅用于学习交流…相关版权归原作者所有。如有异议,请联系我 751749090@qq.com [麦特matt]
将在第一时间作出相关处理.