golang json 转 map 切片 结构体

╰+攻爆jí腚メ 2021-09-07 06:01 473阅读 0赞

目录

json转map

json转切片

json转结构体

注意点


转json使用的是json_Marshal.也就是序列化的过程,那么反序列的函数json.Unmarshal()

json转map

  1. /**
  2. json转map
  3. */
  4. func main3() {
  5. jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}`
  6. mMap := make(map[string]interface{})
  7. err := json.Unmarshal([]byte(jsonStr), &mMap)
  8. if err != nil {
  9. fmt.Println("反序列化失败")
  10. } else {
  11. // map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔]
  12. fmt.Println(mMap)
  13. }
  14. }

json转切片

这里有一个注意点那就是切片最后一个没有“,” 这里需要注意一

  1. func main() {
  2. jsonStr := `[
  3. {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]},
  4. {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]},
  5. {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}
  6. ]`
  7. mSlice := make([]map[string]interface{}, 0)
  8. err := json.Unmarshal([]byte(jsonStr), &mSlice)
  9. fmt.Println(err)
  10. if err != nil {
  11. fmt.Println("反序列化失败")
  12. } else {
  13. // [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:咔咔]]
  14. fmt.Println(mSlice)
  15. }
  16. }

json转结构体

  1. type Persons struct {
  2. Name string
  3. Age int
  4. Address []string
  5. }
  6. /**
  7. json转结构体
  8. */
  9. func main() {
  10. jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}`
  11. k := Persons{}
  12. err := json.Unmarshal([]byte(jsonStr), &k)
  13. if err != nil {
  14. fmt.Println("反序列化失败")
  15. } else {
  16. fmt.Println(k)
  17. }
  18. }

注意点

  • 在json转任何类型时都是传的指针
  • 使用json_Unmarshil来转json
  • json转切片注意每个值后边的逗号
  • json转结构体时注意结构体的属性必须是开放的,也就是首字符必须大写

发表评论

表情:
评论列表 (有 0 条评论,473人围观)

还没有评论,来说两句吧...

相关阅读