咔咔博客之json轉map、切片、結構體
結構體轉json
map轉json
切片轉json
在上面三個轉json使用的是json_Marshal.也就是序列化的過程,那麼反序列的函數json.Unmarshal()html
json轉map
/** json轉map */ func main3() { jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}` mMap := make(map[string]interface{ }) err := json.Unmarshal([]byte(jsonStr), &mMap) if err != nil { fmt.Println("反序列化失敗") } else { // map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] fmt.Println(mMap) } }
json轉切片
這裏有一個注意點那就是切片最後一個沒有「,」 這裏須要注意一點
json
func main() { jsonStr := `[ {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}, {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}, {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]} ]` mSlice := make([]map[string]interface{ }, 0) err := json.Unmarshal([]byte(jsonStr), &mSlice) fmt.Println(err) if err != nil { fmt.Println("反序列化失敗") } else { // [map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔]] fmt.Println(mSlice) } }
json轉結構體
type Persons struct { Name string Age int Address []string } /** json轉結構體 */ func main() { jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}` k := Persons{ } err := json.Unmarshal([]byte(jsonStr), &k) if err != nil { fmt.Println("反序列化失敗") } else { fmt.Println(k) } }
注意點
- 在json轉任何類型時都是傳的指針
- 使用json_Unmarshil來轉json
- json轉切片注意每一個值後邊的逗號
- json轉結構體時注意結構體的屬性必須是開放的,也就是首字符必須大寫