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

相关文章

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引