golang 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值