【GO】json转map、切片、结构体

咔咔博客之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转结构体时注意结构体的属性必须是开放的,也就是首字符必须大写

博主微信欢迎交流

在这里插入图片描述

相关文章
相关标签/搜索