JSON简介
JSON数据格式
JSON数据在线解析
JSON序列化
结构体序列化
json.Marshal()
// 结构体序列化
monster := Monster{
"大头",
105,
"202019951120",
5000.0,
"王八拳",
}
fmt.Println(monster)
data,err := json.Marshal(&monster)
if err != nil {
fmt.Println("序列化失败!")
}
fmt.Printf(string(data))
map序列化
//map序列化
testMap := make(map[string]interface{})
testMap["name"] = "大头"
testMap["age"] = 150
testMap["sex"] = "男"
data,err = json.Marshal(testMap)
fmt.Println(testMap)
fmt.Println(string(data))
切片序列化
//切片序列化
var testSlice []map[string]interface{}
m1 := make(map[string]interface{})
m1["大头"] = "good"
m1["二头"] = "bad"
testSlice = append(testSlice,m1)
m2 := make(map[string]interface{})
m2["大f头"] = "good"
m2["二f头"] = "bad"
testSlice = append(testSlice,m2)
fmt.Println(testSlice)
data , err = json.Marshal(testSlice)
fmt.Println(string(data))
JSON反序列化
//反序列化操作
//struct
str1 := "{\"Name\":\"大头\",\"Age\":105,\"Birthday\":\"202019951120\",\"Sal\":5000,\"Skill\":\"王八拳\"}"
var monster2 Monster
err = json.Unmarshal([]byte(str1),&monster2)
if err != nil {
fmt.Println("反序列化失败!!")
}
fmt.Println(monster2)
fmt.Println(monster2.Name)
fmt.Println()
//map
str2 := "{\"age\":150,\"name\":\"大头\",\"sex\":\"男\"}"
//反序列化时不需要make,make操作被封装到 Unmarshal 函数中
var map2 map[string]interface{}
err = json.Unmarshal([]byte(str2),&map2)
fmt.Println(map2)
fmt.Println()
//slice
str3 := "[{\"二头\":\"bad\",\"大头\":\"good\"}," +
"{\"二f头\":\"bad\",\"大f头\":\"good\"}]"
//反序列化时不需要make,make操作被封装到 Unmarshal 函数中
var slice2 []map[string]interface{}
err = json.Unmarshal([]byte(str3),&slice2)
fmt.Println(slice2)