【GO】json转map、切片、结构体 - Go语言中文社区

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


咔咔博客之json转map、切片、结构体

结构体转json
map转json
切片转json
在上面三个转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转结构体时注意结构体的属性必须是开放的,也就是首字符必须大写

博主微信欢迎交流

在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/fangkang7/article/details/104984178
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢