json序列化 (gob标准库)

2024-09-04 16:58
文章标签 json 序列化 标准 gob

本文主要是介绍json序列化 (gob标准库),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

json序列化 (gob标准库)

type s struct {data map[string]interface{}
}

1.json序列化
会将 int 类型,转化成float64。

func jsonDemo() {var s1 = s{data: make(map[string]interface{}, 8),}s1.data["count"] = 1ret, err := json.Marshal(s1.data)if err != nil {fmt.Println("marshal failed", err)}fmt.Printf("%#v\n", string(ret))var s2 = s{data: make(map[string]interface{}, 8),}err = json.Unmarshal(ret, &s2.data)if err != nil {fmt.Println("unmarshal failed", err)}fmt.Println(s2)for _, v := range s2.data {fmt.Printf("value:%v, type:%T\n", v, v)}
}输出结果:
"{\"count\":1}"
{map[count:1]}
value:1, type:float64

2.gob序列化

标准库gob是golang提供的“私有”的编解码方式,它的效率会比json,xml等更高,特别适合在Go语言程序间传递数据。

func gobDemo() {var s1 = s{data: make(map[string]interface{}, 8),}s1.data["count"] = 1// encodebuf := new(bytes.Buffer)enc := gob.NewEncoder(buf)err := enc.Encode(s1.data)if err != nil {fmt.Println("gob encode failed, err:", err)return}b := buf.Bytes()fmt.Println(b)var s2 = s{data: make(map[string]interface{}, 8),}// decodedec := gob.NewDecoder(bytes.NewBuffer(b))err = dec.Decode(&s2.data)if err != nil {fmt.Println("gob decode failed, err", err)return}fmt.Println(s2.data)for _, v := range s2.data {fmt.Printf("value:%v, type:%T\n", v, v)}
}

3.msgpack:

​ MessagePack是一种高效的二进制序列化格式。它允许你在多种语言(如JSON)之间交换数据。但它更快更小。

go get -u github.com/vmihailenco/msgpack
package mainimport ("fmt""github.com/vmihailenco/msgpack"
)// msgpack demotype Person struct {Name   stringAge    intGender string
}func main() {p1 := Person{Name:   "沙河娜扎",Age:    18,Gender: "男",}// marshalb, err := msgpack.Marshal(p1)if err != nil {fmt.Printf("msgpack marshal failed,err:%v", err)return}// unmarshalvar p2 Personerr = msgpack.Unmarshal(b, &p2)if err != nil {fmt.Printf("msgpack unmarshal failed,err:%v", err)return}fmt.Printf("p2:%#v\n", p2) // p2:main.Person{Name:"沙河娜扎", Age:18, Gender:"男"}
}

这篇关于json序列化 (gob标准库)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136498

相关文章

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Python中json文件和jsonl文件的区别小结

《Python中json文件和jsonl文件的区别小结》本文主要介绍了JSON和JSONL两种文件格式的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 众所周知,jsON 文件是使用php JSON(JavaScripythonpt Object No

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

C 标准库 - `<float.h>`

C 标准库 - <float.h> 概述 <float.h> 是 C 标准库中的一个头文件,它定义了与浮点数类型相关的宏。这些宏提供了关于浮点数的属性信息,如精度、最小和最大值、以及舍入误差等。这个头文件对于需要精确控制浮点数行为的程序非常有用,尤其是在数值计算和科学计算领域。 主要宏 <float.h> 中定义了许多宏,下面列举了一些主要的宏: FLT_RADIX:定义了浮点数的基数。

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json