go 序列化和反序列化

go 序列化和反序列化的概念
  1. go json序列化----就是将go对象,例如map对象转化成json格式字符串这种操作,就是go json序列化。
  2. go json反序列化----就是将go json字符串转换成go中 map对象的形式,就是go json反序列化。
example-01
package main

import (
	"encoding/json"
	"fmt"
)

type Response1 struct {
	Page   int
	Fruits []string
}

type Response2 struct {
	Page   int      `json:"page"`
	Fruits []string `json:"fruits"`
}

func main() {

	//布尔型
	boolByte, _ := json.Marshal(true)
	fmt.Println(string(boolByte))

	//整数型
	intByte, _ := json.Marshal(100)
	fmt.Println(string(intByte))

	//浮点型
	floatByte, _ := json.Marshal(1.23456)
	fmt.Println(string(floatByte))

	//字符串
	stringByte, _ := json.Marshal("字符串啊啊啊")
	fmt.Println(string(stringByte))

	//切片
	sliceByte, _ := json.Marshal([]string{"apple", "orange", "banana"})
	fmt.Println(string(sliceByte))

	//字典
	mapByte, _ := json.Marshal(map[string]int{"apple": 5, "orange": 6, "banana": 7})
	fmt.Println(string(mapByte))

	//自定义类型1
	customsByte1, _ := json.Marshal(&Response1{Page: 1, Fruits: []string{"apple", "orange", "banana"}})
	fmt.Println(string(customsByte1))

	//自定义类型2,tag语法
	customsByte2, _ := json.Marshal(&Response2{Page: 2, Fruits: []string{"apple", "orange", "banana"}})
	fmt.Println(string(customsByte2))

	//反序列化到结构体
	json1 := `{"Page":1,"Fruits":["apple","orange","banana"]}`
	json2 := `{"page":2,"Fruits":["apple","orange","banana"]}`
	response1 := Response1{}
	response2 := Response2{}
	json.Unmarshal([]byte(json1), &response1)
	fmt.Println(response1)
	json.Unmarshal([]byte(json2), &response2)
	fmt.Println(response2)
}
打印结果

true
100
1.23456
“字符串啊啊啊”
[“apple”,“orange”,“banana”]
{“apple”:5,“banana”:7,“orange”:6}
{“Page”:1,“Fruits”:[“apple”,“orange”,“banana”]}
{“page”:2,“fruits”:[“apple”,“orange”,“banana”]}
{1 [apple orange banana]}
{2 [apple orange banana]}

example-02
package main

import (
	"encoding/json"
	"fmt"
)

type Student struct {
	Name  string `json:"student_name"`
	Age   int    `json:"age"`
	Score int    `json:"score"`
}

func main() {
	var stu Student = Student{
		Name:  "stu01",
		Age:   18,
		Score: 80,
	}

	data, err := json.Marshal(stu)
	if err != nil {
		fmt.Println("json encode stu failed, err:", err)
		return
	}

	fmt.Println(string(data))
}

打印结果:

{“student_name”:“stu01”,“age”:18,“score”:80}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值