Go的反序列化:将json字符串 反序列化成对应数据(比如:结构体,map,切片) (Golang经典编程案例) - Go语言中文社区

Go的反序列化:将json字符串 反序列化成对应数据(比如:结构体,map,切片) (Golang经典编程案例)


json反序列化是指,将json字符串 反序列化成对应数据(比如:结构体,map,切片)

下面分别将struct,map,slice 反序列化成对应数据。

案例1:将json字符串,反序列化成struct

package main

import (
	"encoding/json"
	"fmt"
)

type Hero struct {
	Name string
	Age int
	Birthday string
	Sal float64
	Skill string
}
//将json字符串,反序列化成struct
func unmarshalStruct() {
	//说明:str在项目的开发中,是通过网络传输获取到,或者读取文件获取到
	str := "{"Name":"张三丰","Age":98,"Birthday":"2001-09-21","Sal":3800.85,"Skill":"武当剑法"}"

	//定义一个Hero实例
	var hero Hero
	err := json.Unmarshal([]byte(str), &hero)
	if err != nil {
		fmt.Printf("unmarshal err=%vn", err)
	}
	fmt.Printf("反序列化后 hero=%v hero.Name=%vn", hero, hero.Name)
}

func main() {
	unmarshalStruct()
}

执行结果如下图所示:
在这里插入图片描述

案例2:将json字符串,反序列化成map

package main

import (
	"encoding/json"
	"fmt"
)

//将json字符串,反序列化成map
func unmarshalMap() {
	str := "{"name":"张无忌","age":18,"address":"武当剑法"}"

	//定义一个map
	var a map[string]interface{}

	//注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数
	err := json.Unmarshal([]byte(str), &a)
	if err != nil {
		fmt.Printf("unmarshal err=%vn", err)
	}
	fmt.Printf("反序列化后 a=%vn", a)
}

func main() {
	unmarshalMap()
}

执行结果如下:
在这里插入图片描述

案例3:将json字符串,反序列化成slice

package main

import (
	"encoding/json"
	"fmt"
)

//将json字符串,反序列化成切片
func unmarshalSlice() {
	str := "[{"address":"北京","age":8,"name":"tom"}," +
		"{"address":["河南","上海"],"age":18,"name":"mary"}]"

	//定义一个slice
	var slice []map[string]interface{}
	//注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数
	err := json.Unmarshal([]byte(str), &slice)
	if err != nil {
		fmt.Printf("unmarshal err=%vn", err)
	}
	fmt.Printf("反序列化后 slice=%vn", slice)
}

func main() {
	unmarshalSlice()
}

执行结果如下图:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/cui_yonghua/article/details/94596762
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:05:54
  • 阅读 ( 1118 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢