栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

json.Marshal和json.Unmarshal的使用

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

json.Marshal和json.Unmarshal的使用

申明:本文只用做自己学习记录

1. json.Marshal(person):将数据结构转换为json字符串
type Student struct {
	Name  string `json:"name"`
	Age   int    `json:"age"`
	High  int    `json:"high"`
	Sex   string `json:"sex"`
	Class *Class `json:"class"`
}

type Class struct {
	ClassName string `json:"classname"`
	Grade     int    `json:"grade"`
}

func main() {
	//实例化一个数据结构,用于生成json字符串
	person := Student{
		Name: "张三",
		Age:  18,
		High: 182,
		Sex:  "男",
	}

	//指针变量
	class := new(Class)
	class.ClassName = "1班"
	class.Grade = 3
	person.Class = class

	//Marshal失败时err!=nil
	jsonbyte, err := json.Marshal(person)
	if err != nil {
		fmt.Println("生成json字符串错误")
	}
	//jsonbyte是[]byte类型,转化成string类型便于查看
	fmt.Println(string(jsonbyte))
}
//输出:
//{"name":"张三","age":18,"high":182,"sex":"男","class":{"classname":"1班","grade":3}}
2. json.Unmarshal(str, &stu):将json字符串转换为数据结构
type Student struct {
	Name    interface{} `json:"personname"`
	Age     interface{} `json:"age"`
	High    interface{} `json:"high"`
	Sex     interface{} `json:"sex"`
	Class   interface{} `json:"class"`
	Message interface{} `json:"message"`
}

type Class struct {
	ClassName string `json:"classname"`
	Grade     int    `json:"grade"`
}

func main() {
	//json字符中的"引号,需用进行转义,否则编译出错
	data := "{"personname":"张三","age":18,"high":182,"sex":"男","class":{"classname":"1班","grade":3},"message":"测试成功!"}"
	//转换格式
	str := []byte(data)

	//Unmarshal的第一个参数是json字符串,第二个参数是接受json解析的数据结构。
	//第二个参数必须是指针,否则无法接收解析的数据,如stu仍为空对象Student{}
	//注:可以直接stu:=new(Student),此时的stu自身就是指针
	stu := Student{}
	err := json.Unmarshal(str, &stu)
	//解析失败会报错,如json字符串格式不对,缺"号,缺}等。
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(stu)
}
//输出:
//{张三 18 182 男 map[classname:1班 grade:3] 测试成功!}

参考博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号