iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang中Json的序列化和反序列化的使用
  • 118
分享到

Golang中Json的序列化和反序列化的使用

2024-04-02 19:04:59 118人浏览 安东尼
摘要

目录 JSON:创建格式:基本数据类型序列化:map序列化:切片序列化:反序列化为结构体:反序列化为map:反序列化为切片: jsON: JSON(javascr

 jsON:

  • JSON(javascript Object Notation):是一种轻量级的数据交换格式。 它是基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于计算机解析和生成,并有效的 提升网络传输效率。
  • Json易于机器解析和生成,并有效的提升网络传输效率,通常程序传输时会先将数据序列化成json字符串,接收方再反序列化成原数据类型
  • 所有的数据类型都可以通过Json表示
  • Json.cn这个网站可以验证Json格式
  • 序列化用json.Marshal()
  • 反序列化用json.Unmarshal(),反序列化时要和序列化前的数据类型保持一致

创建格式:

在这里插入图片描述

基本数据类型序列化:

func testBasic() {
	num := 1.111
	marshal, err := json.Marshal(num)
	if err != nil {
		fmt.Println("json.Marshal err:", err)
	}
	fmt.Println("序列化后:", string(marshal)) // 序列化后: 1.111
}

结构体序列化:

func main() {
	testStudent()
}

// 如果加上`json:"student_name"`,序列化以后的数据字段是返回指定格式的,可以小写,json固定,后面的随意
type Student struct {
	// 变量首字母大写才能被解析
	Name     string `json:"student_name"`
	Age      int    `json:"student_age"`
	Birthday string `json:"student_birthday"`
	Address  string `json:"student_address"`
}


func testStudent() {
	student := Student{
		Name:     "itzhuzhu",
		Age:      24,
		Birthday: "1998-01-01",
		Address:  "广州市天河区",
	}
	marshal, err := json.Marshal(&student)
	if err != nil {
		fmt.Println("json.Marshal err:", err)
	}
	fmt.Println("序列化后:", string(marshal)) // 序列化后:{"Name":"itzhuzhu","Age":24,"Birthday":"1998-01-01","Address":"广州市天河区"}
}

map序列化:

func testMap() {
	var m map[string]interface{}
	m = make(map[string]interface{})
	m["name"] = "韩信"
	m["age"] = 23
	m["address"] = "广州"

	marshal, err := json.Marshal(m)
	if err != nil {
		fmt.Println("json.Marshal err:", err)
	}
	fmt.Println("序列化后:", string(marshal)) // 序列化后: {"address":"广州","age":23,"name":"韩信"}
}

切片序列化:

func testSlice() {
	var slice []map[string]interface{}
	var m map[string]interface{}
	m = make(map[string]interface{})
	m["name"] = "韩信"
	m["age"] = 23
	m["address"] = "广州"
	slice = append(slice, m)
	marshal, err := json.Marshal(m)
	if err != nil {
		fmt.Println("json.Marshal err:", err)
	}
	fmt.Println("序列化后:", string(marshal)) // 序列化后: {"address":"广州","age":23,"name":"韩信"}
}

反序列化为结构体:

func deserialize() {
	str := "{\"Name\":\"itzhuzhu\",\"Age\":24,\"Birthday\":\"1998-01-01\",\"Address\":\"广州市天河区\"}"

	// 使用Unmarshal反序列化
	var student Student
	err := json.Unmarshal([]byte(str), &student)
	if err != nil {
		fmt.Println("json.Unmarshal err:", err)
	}

	fmt.Println("反序列化后:", student) // 反序列化后: {itzhuzhu 24 1998-01-01 广州市天河区}
}

反序列化为map:

func deserializeMap() {
	str := " {\"address\":\"广州\",\"age\":23,\"name\":\"韩信\"}"

	// 反序列化的时候不需要make,被封装到Unmarshal中了
	var m map[string]interface{}

	err := json.Unmarshal([]byte(str), &m)
	if err != nil {
		fmt.Println("json.Unmarshal err:", err)
	}

	fmt.Println("反序列化后:", m) // map[address:广州 age:23 name:韩信]
}

反序列化为切片:

func deserializeSlice() {
	str := " [{\"address\":\"广州\",\"age\":23,\"name\":\"韩信\"}]"

	var slice []map[string]interface{}

	err := json.Unmarshal([]byte(str), &slice)
	if err != nil {
		fmt.Println("json.Unmarshal err:", err)
	}

	fmt.Println("反序列化后:", slice) // 反序列化后: [map[address:广州 age:23 name:韩信]]
}

到此这篇关于golang中Json的序列化和反序列化的使用的文章就介绍到这了,更多相关Golang Json序列化和反序列化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang中Json的序列化和反序列化的使用

本文链接: https://www.lsjlt.com/news/146782.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang中Json的序列化和反序列化的使用
    目录 JSON:创建格式:基本数据类型序列化:map序列化:切片序列化:反序列化为结构体:反序列化为map:反序列化为切片: JSON: JSON(JavaScr...
    99+
    2022-11-13
  • Golang中Json的序列化和反序列化怎么使用
    这篇文章主要介绍“Golang中Json的序列化和反序列化怎么使用”,在日常操作中,相信很多人在Golang中Json的序列化和反序列化怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang中Js...
    99+
    2023-06-30
  • SpringBoot之Json的序列化和反序列化问题
    目录控制json序列化/反序列化1. @JsonIgnoreProperties的用法2. @JsonProperty 注解3. @JsonCreator 注解4. @JsonSet...
    99+
    2022-11-13
  • C#对Json进行序列化和反序列化
    一、Json简介 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Json采用完全独立于语言的文本格式。这使得J...
    99+
    2022-11-13
  • golang序列化和反序列化的方法是什么
    Go语言中序列化和反序列化可以通过将数据转换为字节流格式来实现,常见方法有“JSON序列化和反序列化”、“XML序列化和反序列化”、“gob序列化和反序列化”和“Protocol Buffers序列化和反序列化”四种:1、使用“json.M...
    99+
    2023-12-18
    golang反序列化 golang序列化 Golang go语言
  • Jil、json序列化和反序列化库的示例分析
    这篇文章主要介绍了Jil、json序列化和反序列化库的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Jil很牛,比Newtonsof...
    99+
    2022-10-19
  • JavaScript中怎么用JSON来序列化与反序列化
    小编给大家分享一下JavaScript中怎么用JSON来序列化与反序列化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用JSON...
    99+
    2022-10-19
  • 如何使用Python中的序列化和反序列化
    如何使用Python中的序列化和反序列化,需要具体代码示例序列化和反序列化是在数据存储和传输过程中非常重要的概念。在Python中,我们可以使用pickle模块来实现序列化和反序列化操作。本文将详细介绍如何使用Python中的pickle模...
    99+
    2023-10-22
    Python 序列化 反序列化
  • C#如何对Json进行序列化和反序列化
    这篇“C#如何对Json进行序列化和反序列化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#如何对Json进行序列化和反序...
    99+
    2023-06-30
  • 如何使用Python中的pickle和JSON进行对象序列化和反序列化
    如何使用Python中的pickle和JSON进行对象序列化和反序列化Python是一种简单而强大的编程语言,其内置了许多有用的库和模块,使开发人员能够快速进行各种任务。其中,pickle和JSON是两个常用的模块,用于对象序列化和反序列化...
    99+
    2023-10-22
    序列化 JSON pickle
  • JavaScript如何实现基于JSON的序列化和反序列化
    这篇文章将为大家详细讲解有关JavaScript如何实现基于JSON的序列化和反序列化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。基于JSON的序列化和反序列化(ser...
    99+
    2022-10-19
  • C#对JSON与对象的序列化与反序列化
    一、利用Web服务中的JavaScriptSerializer 类 System.Web.Script.Serialization空间,位于System.Web.extensions...
    99+
    2022-11-13
  • C#使用Json.Net对JSON与对象的序列化与反序列化
    目录一、使用Json.Net1、把DataTable转换成json格式,使用最新Json.Net DLL ,已经内置转换器。2、对Json.Net序列化和反序列化的控制二、空值的处理...
    99+
    2022-11-13
  • SpringBoot之Json的序列化和反序列化问题怎么解决
    这篇文章主要讲解了“SpringBoot之Json的序列化和反序列化问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot之Json的序列化和反序列化问题怎么解决”吧...
    99+
    2023-07-02
  • Python使用protobuf序列化和反序列化的实现
    protobuf介绍 protobuf是一种二进制的序列化格式,相对于json来说体积更小,传输更快。 安装protobuf 安装protobuf的目的主要用来将proto文件编译成python、c、Java可调...
    99+
    2022-06-02
    Python 序列化和反序列化
  • PHP的序列化和反序列化详情
    目录一、PHP 为什么要反序列化?二、PHP如何反序列化?三、PHP反序列化漏洞1、常用 的魔术方法2、漏洞产生条件3、题目一、PHP 为什么要反序列化? PHP程序执行结束以后会将...
    99+
    2022-11-13
  • PHP的序列化和反序列化入门
    什么是PHP序列化 serialize() //将一个对象转换成一个字符串unserialize() //将字符串还原成一个对象 通过序列化与反序列化我们可以很方便的在PHP中进行对象的传递。本质上反序列化是没有危害的。但是如果...
    99+
    2023-10-27
    android
  • 如何在golang中使用Json序列化
    这篇文章给大家介绍如何在golang中使用Json序列化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。go自带json库"encoding/json" 官当自带json-iterator号...
    99+
    2023-06-14
  • PHP中的序列化和反序列化是什么
    这篇“PHP中的序列化和反序列化是什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“PHP中的序列化和反序列化是什么”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让...
    99+
    2023-06-06
  • Go语言对JSON数据进行序列化和反序列化
    golang中对json的序列化/反序列化操作还是比较容易的,序列化操作主要是通过encoding/json包的Marshal()方法来实现,反序列化操作主要是通过encoding/...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作