func structToMap(s interface{}) map[string]interface{} { result := make(map[string]interface{}) // 使用反射获取结构体字段信息 v := reflect.ValueOf(s) t := reflect.TypeOf(s) for i := 0; i < t.NumField(); i++ { // 将结构体字段名和值存储到Map中 result[t.Field(i).Name] ...
// 方法1:使用go中标准库里的json编码成[]byte,然后再解码到map里 //data, _ := json.Marshal(&User)//m := make(map[string]any) //json.Unmarshal(data, &m)//Struct2map方法2:通过反射将struct转换成mapfuncStruct2map(obj any) (datamap[string]any, err error) { // 通过反射将结构体转换成...
通过reflect模块来获取结构体的key值和value值,然后直接进行组装。这种方法不能识别结构体中的tag,所以无法兼容首字母小写,而其他字母存在大写的情况. 参考代码: funcReflectMethod(objinterface{})map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj)vardata =make(map[string]interfa...
在Golang中,如何将一个结构体转成map? 本文介绍两种方法。第一种是是使用json包解析解码编码。第二种是使用反射,使用反射的效率比较高,代码在 我的Github仓库github.com/liangyaopei/struct_to_map 假设有下面的一个结构体 funcnewUser()User{name:="user"MyGithub:=GithubPage{URL:"https://github.com/...
在Golang中,如何将一个结构体转成map? 本文介绍两种方法。第一种是是使用json包解析解码编码。第二种是使用反射,使用反射的效率比较高,代码在 我的Github仓库github.com 假设有下面的一个结构体 func newUser() User { name := "user" MyGithub := GithubPage{ ...
本文实现了使用反射将结构体转成map的方法。通过标签(tag)和反射,将上文示例的newUser()返回的结果转化成下面的一个map。 其中包含struct的域的展开,定制化struct的方法。 map[string]interface{}{"name":"user","no_dive": StructNoDive{NoDive:1},// dive struct field"url":"https://github.com/liang...
Golang⾃定义结构体转map的操作 在Golang中,如何将⼀个结构体转成map?本⽂介绍两种⽅法。第⼀种是是使⽤json包解析解码编码。第⼆种是使⽤反射,使⽤反射的效率⽐较⾼,。如果觉得代码有⽤,可以给我的代码仓库⼀个star。假设有下⾯的⼀个结构体 func newUser() User { name := ...
mergo.Map(&m, student) fmt.Printf("m: %v\n", m)// 输出:m: map[age:23 name:Tom]} funcmain(){structToMap()} 在这个例子中,我们定义了一个 Student 结构体,并通过 Mergo 将它转换成了 map。注意,email 字段没有被导出(小写字母开头),所以在转换...
golang结构体转map package main import ( "encoding/json" "fmt" "reflect" "time" ) type Body struct { Person1 string Age int Salary float32 } func Struct2Map(obj interface{}) (data map[string]interface{}, err error) { data = make(map[string]interface{})...