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

介绍:json序列化是指,将有 key-value 结构的数据类型(比如结构体,map,切片)序列化成json字符串的操作。

下面分别演示结构体,map,切片,基本类型序列化成json字符串。

案例1:结构体的序列化

package main

import (
	"fmt"
	"encoding/json"
)

//定义一个结构体
type Hero struct{
	Name string `json:"hero_name"` //起别名为:hero_name
	Age int `json:"hero_age"`
	Birthday string
	Sal float64
	Skill string
}
func testStruct()  {

	hero := Hero{
		Name:"张三丰",
		Age:88,
		Birthday:"2009-11-11",
		Sal:8000.0,
		Skill:"教武当剑法!!",
	}
	//将monster序列化
	data, err := json.Marshal(&hero)
	if err != nil{
		fmt.Printf("序列号错误 err=%v\n",err)
	}
	//输出序列化后的结果
	fmt.Printf("序列化后=%v\n",string(data))
}

func main() {
	testStruct()
}

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

案例2:map的序列化

package main

import (
	"encoding/json"
	"fmt"
)

//将map进行序列化
func testMap()  {
	//定义一个map
	var a map[string]interface{}
	a = make(map[string]interface{})
	a["name"] = "张无忌"
	a["age"] = 22
	a["address"] = "冰火岛"

	//将a这个map进行序列化
	data, err := json.Marshal(a)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n",err)
	}
	//输出序列化之后的结果
	fmt.Printf("序列化后=%v\n",string(data))
}

func main() {
	testMap()
}

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

案例3:切片的序列化

package main

import (
	"encoding/json"
	"fmt"
)

//将切片进行序列化
func testSlice()  {
	var slice []map[string]interface{}
	var m1 map[string]interface{}
	m1 = make(map[string]interface{})
	m1["name"] = "张无忌"
	m1["age"] = 25
	m1["address"] = "冰火岛"
	slice = append(slice,m1)

	var m2 map[string]interface{}
	m2 = make(map[string]interface{})
	m2["name"] = "张三丰"
	m2["age"] = 89
	m2["address"] = [2]string{"武当山","夏威夷"}
	slice = append(slice,m2)

	//将切片进行序列化
	data, err := json.Marshal(slice)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n",err)
	}
	//输出序列化之后的结果
	fmt.Printf("序列化后=%v\n",string(data))
}

func main() {
	testSlice()
}

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

案例4:基本数据类型的序列化(对基本数据类型进行序列化意义不大)

package main

import (
	"encoding/json"
	"fmt"
)

//将基本数据类型进行序列化
func testFloat64()  {
	var num float64 = 3456.85 

	//对num进行序列化
	data, err := json.Marshal(num)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n",err)
	}
	//输出序列化之后的结果
	fmt.Printf("序列化后=%v\n",string(data))
}

func main() {
	testFloat64()
}

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据知道

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

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

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

打赏作者

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

抵扣说明:

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

余额充值