golang学习(十八):json

 文章说明:这篇文章主要是对结构体进行操作,其他数据类型相似。

一、json序列化

//json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写,
//也利于机器解析和生成
//任何数据类型都可以转成json格式
//json键值对是用来保存数据的一种方式
//如{"name": "tom","age": 18}
//json序列化是指将有key-value结构的数据类型(比如map、结构体、切片)序列化成json字符串的操作
package main

import (
	"encoding/json"
	"fmt"
)

//定义一个结构体
type Student struct {
	Name string
	Age int
	Skill string
}
func testStruct() {
	student := Student{
		Name:"tom",
		Age:18,
		Skill:"打篮球",
	}
	//将student序列化
	data, err := json.Marshal(&student)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n",err)
	}
	//输出序列化的结构
	fmt.Printf("序列化后=%v\n",string(data))
}

func main() {
	testStruct()
}

运行结果如下:

对于结构体序列化,如果我们希望序列化key的名字自己重新制定,可以给struct指定一个tag标签
//定义一个结构体
//对于结构体序列化,如果我们希望序列化key的名字自己重新制定,可以给struct指定一个tag标签
type Student struct {
	Name string  `json:"student_name"`
	Age int
	Skill string
}

结果:

二、json反序列化

//json反序列化
//json反序列化是指将json字符串反序列化成结构体、切片和map

package main

import (
	"encoding/json"
	"fmt"
)

//定义一个结构体
type Student struct {
	Name string
	Age int
	Skill string
}
func unmarshalStruct() {
	//在实际开发中,是通过网络传输获取,或者读取文件取到
	str := "{\"Name\":\"tom\",\"Age\":18,\"Skill\":\"打篮球\"}"
	//定义一个student实例
	var student Student
	//将student反序列化
	err := json.Unmarshal([]byte(str),&student)
	if err != nil {
		fmt.Printf("反序列化错误 err=%v\n",err)
	}
	fmt.Printf("序列化后=%v\n",student)
	}

func main() {
	unmarshalStruct()
}

运行结果如下:

//总结:
//在反序列化一个json字符串时,要确保反序列化后的数据类型和原来序列化前的数据类型一致

参考:尚硅谷韩顺平Go语言核心编程

 


欢迎大家指正补充,感谢阅读。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值