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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静态网页设计——天行九歌(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a;https://www.bilibili.com/video/BV1de411m7y4/?vd_source5f425e0074a7f92921f53ab87712357b 源码&#xff1a;https://space.bilibili.com…

java回溯算法、最短路径算法、最小生成树算法

回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。 最短路径算法 从某顶点出发&#xff0c;沿图的边到达另一顶点所经过的路径中…

高通开发系列 - toolchain交叉编译器编译kernel以及生成boot镜像

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 背景概述分析过程generate_defconfig.sh脚本环境准备合并其他几个配置文件开始编译生成dtb镜像

Python-PyQt5树莓派上位机

Python-PyQt5树莓派上位机 一个使用PythonQT设计的树莓派的上位机&#xff0c;功能大概如下 1.笔记本电脑与树莓派的通讯是否成功显示&#xff08;给个信号显示判断是否通讯成功&#xff09;&#xff1b; 2.阈值的设置显示&#xff1b; 3.图像成像的显示&#xff1b; 4.是否发生…

【python爬虫】如何开始写爬虫?来给你一条清晰的学习路线吧~

记录一下我自己从零开始写python爬虫的心得吧&#xff01; 我刚开始对爬虫不是很了解&#xff0c;又没有任何的计算机、编程基础&#xff0c;确实有点懵逼。从哪里开始&#xff0c;哪些是最开始应该学的&#xff0c;哪些应该等到有一定基础之后再学&#xff0c;也没个清晰的概…

模糊综合评价

第一步&#xff1a;确定评语指标集 评语集 第二步&#xff1a;求出模糊评价矩阵P,往往结合具体数据 通常用频率法确定隶属度 用变异系数法确定权重 前几篇博客有讲变异系数法 移步 模糊合成

【hcie-cloud】【19】云原生详细介绍、华为云Stack中云原生服务简介

文章目录 前言云原生简介云计算和云原生云原生的特征云原生技术架构云原生的定义云原生关键技术 - 容器&不可变基础设施1、 容器2、微服务3、服务网格4、DevOps5、 不可变基础设施6、 声明式API 云原生关键技术 - 申明式API 华为云Stack中云原生服务简介构建以应用为中心的…

Day1Qt

1、实现登录窗口界面 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QIcon>//图标 #include <QLabel>//标签类 #include <QMovie>//动态类 #include <QLineEdit>//行编辑类 #include <QPushButton>…

龙芯+RT-Thread+LVGL实战笔记(29)——电子琴弹奏

【写在前面】临近期末,笔者工作繁忙,因此本系列教程的更新频率有所放缓,还望订阅本专栏的朋友理解,请勿催更。笔者在此也简要声明几点: 有些硬件模块笔者并没有,如LED点阵、压力传感模块、RFID模块等,因此这些模块的相关任务暂时无法给出经过验证的代码。其实,教程进行…

一文带你全面了解什么是自动化测试?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

打造专属个人或企业知识付费平台,核心功能设计

在当今信息爆炸的时代&#xff0c;知识管理已经成为了每个人必须面对的问题。然而&#xff0c;市面上的知识付费平台大多数都是通用的&#xff0c;无法满足个性化需求。 因此&#xff0c;明理信息科技提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下&#xff1…

js逆向第14例:猿人学第7题动态字体,随风漂移

任务7:采集这5页中胜点列的数据,找出胜点最高的召唤师,将召唤师姓名填入答案中 此题采集的是胜点列表的数据如下 通过控制台审查元素查看,可以看到是乱码,记得几年前的快手,小红书,抖音也采用了此类反爬措施,html页面显示的是乱码,浏览器能正常显示数据,大概率就是…

基于ssm的双减后初小教育课外学习生活活动平台的设计与实现论文

双减后初小教育课外学习生活活动平台的设计与实现 摘 要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前学校对于课外学习活动信息的管理和控制&#xff0c;采用人工登记的方式保存相关…

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于海洋捕食者优化的Elman网络5.测试结果6.参考文献7.Matlab代码…

在Spring Cloud Config Github配置中心

关于Spring Cloud系列我们其实讲解了很多&#xff0c;但是这里我们介绍一下Spring Cloud Config&#xff0c;它是一个解决分布式系统的配置管理方案&#xff0c;他包含了Client 和 Server 两个部分&#xff0c;server提供配置文件的存储&#xff0c;以接口的方式将配置文件内容…

一天一个设计模式---工厂方法

概念 工厂模式是一种创建型设计模式&#xff0c;其主要目标是提供一个统一的接口来创建对象&#xff0c;而不必指定其具体类。工厂模式将对象的实例化过程抽象出来&#xff0c;使得客户端代码不需要知道实际创建的具体类&#xff0c;只需通过工厂接口或方法来获取所需的对象。…

《矩阵分析》笔记

来源&#xff1a;【《矩阵分析》期末速成 主讲人&#xff1a;苑长&#xff08;5小时冲上90&#xff09;】https://www.bilibili.com/video/BV1A24y1p76q?vd_sourcec4e1c57e5b6ca4824f87e74170ffa64d 这学期考矩阵论&#xff0c;使用教材是《矩阵论简明教程》&#xff0c;因为没…

全球企业绿色供应链数据(含CITI指数和CATI指数,2014-2023年)

数据简介&#xff1a;发文趋势与主题分布 数据来源&#xff1a;公众环境研究中心&#xff08;IPE&#xff09; 时间跨度 CITI指数&#xff1a;2014-2023年&#xff1b; CATI指数&#xff1a;2021-2023年 数据范围&#xff1a;品牌型企业&#xff0c;温室气体重点排放行业的上…

某市公共资源交易网

目标网站首页&#xff1a;aHR0cDovL2dnenkuendmd2IudGouZ292LmNu/ 分析页面&#xff1a;aHR0cDovL2dnenkuendmd2IudGouZ292LmNuL3h3engvaW5kZXhfMi5qaHRtbA 点击前URL http://ggzy.zwfwb.tj.gov.cn:80/zwyw/1030977.jhtml 点击后URL http://ggzy.zwfwb.tj.gov.cn/zwyw/PtP89W…

Kettle Local引擎使用记录(二):问题记录及解决方法

Kettle Local &#x1f4da; 前言⁉️问题记录❓问题一&#xff1a;Database type not found!…database type with plugin id [Oracle] couldnt be found!❕原因&#xff1a;没有初始化Kettle环境❗解决&#xff1a;添加监听器&#xff0c;进行Kettle环境初始化 ❓问题二&…