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

本文详细介绍如何在Go语言中将JSON数据转换为map、切片及结构体,包括使用json.Marshal进行序列化和json.Unmarshal进行反序列化的具体操作。通过实例演示了不同数据类型之间的转换过程,以及在转换过程中需要注意的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

博主微信欢迎交流

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咔咔-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值