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

相关文章

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、类对象映

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开

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. 索引

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对