golang 开发 Struct 转换成 map 两种方式比较
原文链接:https://www.jianshu.com/p/81c4304f6d1b
最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要我们把struct转化成map,下面是是我尝试两种不同struct转换成map的方法:
mport ("encoding/json""fmt""reflect""time" )type Persion struct {Id intName stringAddress stringEmail stringSchool stringCity stringCompany stringAge intSex stringProviece stringCom stringPostTo stringBuys stringHos string }func main() {StructToMapViaJson()//StructToMapViaReflect() }func StructToMapViaJson() {m := make(map[string]interface{})t := time.Now()person := Persion{Id: 98439,Name: "zhaondifnei",Address: "大沙地",Email: "dashdisnin@126.com",School: "广州第十五中学",City: "zhongguoguanzhou",Company: "sndifneinsifnienisn",Age: 23,Sex: "F",Proviece: "jianxi",Com: "广州兰博基尼",PostTo: "蓝鲸XXXXXXXX",Buys: "shensinfienisnfieni",Hos: "zhonsndifneisnidnfie",}j, _ := json.Marshal(person)json.Unmarshal(j, &m)fmt.Println(m)fmt.Println(time.Now().Sub(t)) }
一、通过struct转json,json转成map
func StructToMapViaJson() {m := make(map[string]interface{})t := time.Now()person := Persion{Id: 98439,Name: "zhaondifnei",Address: "大沙地",Email: "dashdisnin@126.com",School: "广州第十五中学",City: "zhongguoguanzhou",Company: "sndifneinsifnienisn",Age: 23,Sex: "F",Proviece: "jianxi",Com: "广州兰博基尼",PostTo: "蓝鲸XXXXXXXX",Buys: "shensinfienisnfieni",Hos: "zhonsndifneisnidnfie",}j, _ := json.Marshal(person)json.Unmarshal(j, &m)fmt.Println(m)fmt.Printf("duration:%d", time.Now().Sub(t)) }
二、通过反射形式生成map
func StructToMapViaReflect() {m := make(map[string]interface{})t := time.Now()person := Persion{Id: 98439,Name: "zhaondifnei",Address: "大沙地",Email: "dashdisnin@126.com",School: "广州第十五中学",City: "zhongguoguanzhou",Company: "sndifneinsifnienisn",Age: 23,Sex: "F",Proviece: "jianxi",Com: "广州兰博基尼",PostTo: "蓝鲸XXXXXXXX",Buys: "shensinfienisnfieni",Hos: "zhonsndifneisnidnfie",}elem := reflect.ValueOf(&person).Elem()relType := elem.Type()for i := 0; i < relType.NumField(); i++ {m[relType.Field(i).Name] = elem.Field(i).Interface()}fmt.Println(m)fmt.Printf("duration:%d", time.Now().Sub(t)) }
转载于:https://www.cnblogs.com/wangjq19920210/p/11600479.html
golang 开发 Struct 转换成 map 两种方式比较相关推荐
- Go开发Struct转换成map两种方式比较
最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要 ...
- 用VLC开发视频播放器/组件(两种方式:libVLC / VLC-Qt)
测试环境 MSVC-2015 Qt 5.14.2 QCreator 1. libVLC(关键步骤) 参考:心流剑 libVLC 各版本 下载链接 我的下载版本为:3.0.11 sdk/lib文件夹目录 ...
- ABAP和XML数据格式互相转换的两种方式
ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求.本文介绍两种方式. 1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_x ...
- matlab 转换 tfrecord,训练数据集与TFRecord互相转换的两种方式
TensorFlow使用TFRecord格式来统一存储数据,该格式可以将图像数据.标签信息.图像路径以及宽高等不同类型的信息放在一起进行统一存储,从而方便有效的管理不同的属性. 将训练数据集转成TFR ...
- 技巧:Go 结构体如何转换成 map[string]interface{}
本文介绍了Go语言中将结构体转成map[string]interface{}时你需要了解的"坑",也有你需要知道的若干方法. 我们在Go语言中通常使用结构体来保存我们的数据,例如要 ...
- unicode和字符串之间的转换有两种方式
unicode和字符串之间的转换有两种方式. 1.1.通过JDK自带的"native2ascii"进行转换 首先,您测试的机器需要安装JDK,比如我的机器环境,我的JDK安 ...
- golang读取conf文件的两种方式(ini和Viper)
文章目录 前言 一.ini包 1.下载 2.使用方法 法一:简单方法 法二:结构体反射 二.viper配置管理 1.下载 2.viper的特点 3.使用方法 读取 总结 前言 平时写项目都是习惯于将什 ...
- java中byte数组与int类型的转换(两种方式)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
- Wordpress开发 - 获取作者头像的两种方法
写在前面 今天又被一个头像坑搞惨了,一般我们获取作者的信息是都需要在循环判断中才可以使用的!比如获取作者名称 <?php the_author(); ?> .如果没有在 <?php ...
最新文章
- Linux下视频截取命令
- JetBrains DataGrip工具配置数据库过程详解
- UpdateProgress使用
- Exception in thread AWT-EventQueue-0 java.lang.IllegalThreadStateException
- 基于FPGA的FFT变换实现
- 项目中需要总结的内容
- LeetCode 1979. 找出数组的最大公约数
- server系统万能网卡驱动离线版_科普一分钟|BIOS引导+MBR硬盘格式装系统方法
- AUTOSAR标准与产业发展动态
- 里式替换(LSP)跟多态有何区别?
- android bool转字符串,Android 知识点——当json传入字符串,使用Boolean接收时,GSON会将其转换为false...
- Python日期时间格式转换
- 《Advanced .NET Debugging》 读书笔记 Listing 3-6: 使用sxe在程序载入mscorwks之后停下来载入sos...
- 平面设计斜线排版的技巧方法
- web前端一张页面多少钱?
- 爱奇艺SOAR探索与实践
- 阿里云服务器建站、心选建站、定制建站有什么区别,如何选择
- C++课程设计指导书
- 报错信息:Avoid mutating a prop directly since the value will be overwritten
- 调频 调幅 与 通信
热门文章
- koa2 mysql增删改查_koa2实现对mysql的增删改查函数封装
- 有赞的交易系统架构困局以及破局之道
- 显示计算机程序的表格如何打开,电脑表格怎么小窗口显示不出来怎么办
- python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...
- alias怎么每次登陆都保存_alias命令使用说明
- 【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters
- java 中 Object XML 互转,最终选择Xstream
- linux查看vxlan命令,[svc]linux上vxlan实战
- fopen rt wt matlab,fopen的使用方法
- oracle存储技术,oracle存储体系总结