序列化-Map序列化
Map序列化
Map序列化的大致流程与结构体一致。首先也要先创建map变量。如:
var m map[string]interface{}
key值为string,value 可以是任意数据。但此m不能直接存储数据!必须使用make开辟空间再使用。
m = make(map[string]interface{})
// 赋值
m["name"] = "大晕头"
m["sal"] = 3141.59
m["age"] = 27
m["addr"] = "北京朝阳"
同样,使用序列化函数json.Marshal() 可以将m完成序列化。由于m是引用可以直接传递。
示例代码:
// 封装 map 序列化测试函数
func mapSerial() {
// 定义map变量
var m map[string]interface{}
// 初始化map,获取空间
m = make(map[string]interface{})
// 赋值
m["name"] = "大晕头"
m["sal"] = 3141.59
m["age"] = 27
m["addr"] = [2]string{"北京朝阳", "天津南开"}
// 将 map 使用 Marshal() 函数进行序列化
data, err := json.Marshal(m) // map本身为引用。
if err != nil {
fmt.Println("Marshal err:", err)
return
}
// 查看序列化后的 json 字符串
fmt.Println("map序列化后 = ", string(data))
}
func main() {
// 测试map序列化
mapSerial()
}
输入结果为:
map序列化后 = {"addr":["北京朝阳","天津南开"],"age":27,"name":"大晕头","sal":3141.59}
由于map是无序存储,因此查询序列化后的结果,可以与定义的顺序不一致。