Golang json的反序列化
阿新 • • 發佈:2021-06-28
介紹
json反序列化是指將json字串反序列化成對應的資料型別(比如結構體、map、切片)的操作
1.反序列換結構體
package main import ( "encoding/json" "fmt" ) //定義一個結構體 type Monster struct { Name string Age int Birthday string Sal float64 Skill string } //將json字串反序列化成struct func unmarshalStruct() { str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2021-11-11\",\"Sal\":80000,\"Skill\":\"牛魔拳\"}" //定義一個Monster結構體的例項 var monster Monster err := json.Unmarshal([]byte(str), &monster) if err != nil { fmt.Printf("unmarshal err=%v", err) } fmt.Printf("反序列化後 monster=%v", monster) } func main() {//演示結構體反序列化 unmarshalStruct() }
2.反序列化Map
package main import ( "encoding/json" "fmt" ) //將json反序列化成map func unmarshalMap() { str := "{\"address\":\"洪崖洞\",\"age\":30,\"name\":\"紅孩兒\"}" //定義一個map var a map[string]interface{} //反序列化 //注意:反序列化map,不需要make,因為make操作被封裝到Unmarshal函式err := json.Unmarshal([]byte(str), &a) if err != nil { fmt.Printf("unmarshal err=%v\n", err) } fmt.Printf("反序列化後 a=%v\n", a) } func main() { unmarshalMap() }
3.反序列化slice
package main import ( "encoding/json" "fmt" ) //將json反序列化成切片 func unmarshalSlice() { str := "[{\"address\":\"beijiang\",\"age\":7,\"name\":\"jack\"},{\"address\":[\"shanghai\",\"xiaweiyi\"],\"age\":20,\"name\":\"tom\"}]" //定義一個slice var slice []map[string]interface{} //反序列化,不需要make,因為make操作被封裝到Unmarshal函式 err := json.Unmarshal([]byte(str), &slice) if err != nil { fmt.Printf("unmarshal err=%v\n", err) } fmt.Printf("反序列化後 slice=%v\n", slice) } func main() { unmarshalSlice() }