Golang : Bson\Json互转

2024-01-08 21:20
文章标签 golang json 互转 bson

本文主要是介绍Golang : Bson\Json互转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码

package bson_jsonimport ("encoding/json""errors""fmt""gopkg.in/mgo.v2/bson""os""testing"
)type User struct {Name    string  `json:"name,omitempty" bson:"name,omitempty"`CSDN  string  `json:"csdn,omitempty" bson:"csdn,omitempty"`Quote      string  `json:"quote,omitempty" bson:"quote,omitempty"`
}var user = User{Name: "许大侠",CSDN : "https://blog.csdn.net/halo_hsuh",Quote: "听我一言, 看清远方",
}func toBsonBytes() []byte {/* 结构体序列化成bson格式[]byte */data, err := bson.Marshal(user)if nil != err {fmt.Println("序列化Bson失败")return nil}return data
}func toJsonBytes() []byte {/* 结构体序列化成bson格式[]byte */data, err := json.Marshal(user)if nil != err {fmt.Println("序列化Json失败")return nil}return data
}func ToFile(fileName string, data []byte) error {file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY, 0666)if nil != err {return err}length, err := file.Write(data)if nil != err {return err}if length < len(data) {return errors.New("Write Error: Length Error.")}return nil
}func Print(u User) {fmt.Println("名字: ", u.Name,"; CSDN: ", u.CSDN,"; 名言: ", u.Quote)
}func TestBson(t *testing.T) {var tempUser Userdata := toBsonBytes()/* bson格式[]byte 反序列化成结构体 */err := bson.Unmarshal(data, &tempUser)if nil != err {fmt.Println("反序列化Bson失败", err)return}Print(tempUser)ToFile("./hello.bson", data) // 将序列化的数据存储进文件
}func TestJson(t *testing.T) {var tempUser Userdata := toJsonBytes()/* bson格式[]byte 反序列化成结构体 */err := json.Unmarshal(data, &tempUser)if nil != err {fmt.Println("反序列化Json失败: ", err)return}Print(tempUser)ToFile("./hello.json", data) // 将序列化的数据存储进文件
}func TestJsonToBson(t *testing.T) {// 获取json []bytedata := toJsonBytes()fmt.Println(data)var tempUser User// 将json转化成bson 结构体err := bson.UnmarshalJSON(data, &tempUser)if nil != err {fmt.Println("Json 转 Bson失败: ", err)}Print(tempUser)// 结构体再转化为jsondata2, err := bson.MarshalJSON(tempUser)if nil != err {fmt.Println("Bson 转 Json失败: ", err)}fmt.Println(data2)
}

运行
在这里插入图片描述
代码:

https://download.csdn.net/download/halo_hsuh/12288107

这篇关于Golang : Bson\Json互转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck