目录
转json使用的是json_Marshal.也就是序列化的过程,那么反序列的函数json.Unmarshal()
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转切片
这里有一个注意点那就是切片最后一个没有“,” 这里需要注意一
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转结构体时注意结构体的属性必须是开放的,也就是首字符必须大写