golang中如何将struct转换成map

// 方法1:使用go中标准库里的json编码成[]byte,然后再解码到map里
//data, _ := json.Marshal(&User)
//m := make(map[string]any)
//json.Unmarshal(data, &m)

// Struct2map 方法2:通过反射将struct转换成map
func Struct2map(obj any) (data map[string]any, err error) {
	// 通过反射将结构体转换成map
	data = make(map[string]any)
	objT := reflect.TypeOf(obj)
	objV := reflect.ValueOf(obj)
	for i := 0; i < objT.NumField(); i++ {
		fileName, ok := objT.Field(i).Tag.Lookup("json")
		if ok {
			data[fileName] = objV.Field(i).Interface()
		}else{
			data[objT.Field(i).Name] = objV.Field(i).Interface()
		}
	}
	return data, nil
}

方法1简单,但是执行效率低;
方法2复杂,但是执行效率高。

posted @   专职  阅读(2715)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示