go json 反序列化Unmarshal

package main

import (
	"encoding/json"
	"fmt"
)

//定义接收结构体
type student struct {
	Name  string
	Age   int
	Score float32
	Hobby []string
}

const (
	str1 = "{\"Name\":\"张三\",\"Age\":12,\"Score\":95.5,\"Hobby\":[\"乒乓球\",\"绘画\"]}"
	str2 = "[{\"Name\":\"张三\",\"Age\":12,\"Score\":95.5,\"Hobby\":[\"乒乓球\",\"绘画\"]},{\"Name\":\"李四\",\"Age\":13,\"Score\":97,\"Hobby\":[\"篮球\",\"朗诵\"]}]"
	str3 = "{\"persons\":[{\"Name\":\"张三\",\"Age\":12,\"Score\":95.5,\"Hobby\":[\"乒乓球\",\"绘画\"]},{\"Name\":\"李四\",\"Age\":13,\"Score\":97,\"Hobby\":[\"篮球\",\"朗诵\"]}]}"
)

var (
	zhangsan, lisi student
	zhangsan2      interface{}
	stuSpl         []student
	mmp            map[string]interface{}
)

func main() {
	//1、结构体struct的反序列化,在我们看到str1是一个结构体时,最好用一个结构体去接受,用空接口接受也可以,但会得到一个map
	dome1()
	//2、切片的反序列化
	dmoe2()
	//3、map 反序列化
	dome3()

}

func dome3() {
	err := json.Unmarshal([]byte(str3), &mmp)
	if err == nil {
		fmt.Printf("%v\n", mmp)
	} else {
		fmt.Println("序列化失败,错误原因:", err)
	}
	fmt.Println("==================================================dmoe3")
}

func dmoe2() {
	err := json.Unmarshal([]byte(str2), &stuSpl)
	if err == nil {
		fmt.Printf("%v\n", stuSpl)
	} else {
		fmt.Println("序列化失败,错误原因:", err)
	}
	fmt.Println("==================================================dmoe2")
}

func dome1() {
	//1、输出结构体
	err := json.Unmarshal([]byte(str1), &zhangsan)
	if err == nil {
		fmt.Printf("%v\n", zhangsan)
	} else {
		fmt.Println("序列化失败,错误原因:", err)
	}
	//2、输出map
	err2 := json.Unmarshal([]byte(str1), &zhangsan2)
	if err == nil {
		fmt.Printf("%v\n", zhangsan2)
	} else {
		fmt.Println("序列化失败,错误原因:", err2)
	}
	fmt.Println("==================================================dmoe1")

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值