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] ...
funcReflectMethod(objinterface{})map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj)vardata =make(map[string]interface{})fori :=0; i < t.NumField(); i++ { data[strings.ToLower(t.Field(i).Name)] = v.Field(i).Interface() }returndata } 使用第三方库 ...
2. 合并 map 到 struct 接下来我们看另一个场景:我们有一个 map,需要将其内容合并到一个已有的 struct 中。这种需求在动态配置加载时特别常见。 funcmapToStruct(){ varm =make(map[string]interface{})m["name"] ="Tom"m["age"] =23m["email"] ="12...
} func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj) var data = make(map[string]interface{}) fori := 0; i < t.NumField(); i++ { data[t.Field(i).Name] = v.Field(i).Interface() } returndata } func main() { ...
beforeMap := map[string]interface {}{ "id":"123", "user_name":"酒窝猪", "address":[]map[string]interface{}{{"address": "address01"}, {"address": "address02"}}, } var afterStruct =UserInfoVo{} before := time.Now() marshal, err := json.Marshal(beforeMap) if err!=nil{ fmt...
package demo import ( "fmt" "reflect" "testing" "time" ) type CommonObj struct { Name string `persistence:"name"` Age int `persistence:"age"` LastUpdateTime time.Time `persistence:"lastUpdateTime"` score float64 `persistence:"-"` } func StructConvertMapByTag(obj interface{}, tagName st...
// 方法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的方法。通过标签(tag)和反射,将上文示例的newUser()返回的结果转化成下面的一个map。其中包含struct的域的展开,定制化struct的方法。 map[string]interface{}{ "name": "user", "no_dive": StructNoDive{NoDive: 1}, // dive struct field "url": "https://github....
在Golang中,将interface{}转换为struct是一个常见的需求,通常可以通过反射(reflection)或类型断言(type assertion)来实现。以下是关于Golang中interface{}到struct转换的详细解答: 1. 解释Golang中interface到struct的转换概念 在Golang中,interface{}是一个空接口,它可以持有任意类型的值。将interface{}转换为struct意...
先将map转换成JSON,再通过 JSON 转换成struct 操作有点繁琐 func TestMapToStructByJson(t *testing.T) { beforeMap := map[string]interface {}{ "id":"123", "user_name":"酒窝猪", "address":[]map[string]interface{}{{"address": "address01"}, {"address": "address02"}}, ...