package mainimport ( "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{}) objT := reflect.TypeOf(obj) objV := reflect.ValueOf(obj) for i := 0; i < objT.NumField(); i++ { data[objT.Field(i).Name] = objV.Field(i).Interface() } err = nil return}func Test1() { t := time.Now() a := Body{"aaa", 2, 12.34} elem := reflect.ValueOf(&a).Elem() type_ := elem.Type() m := map[string]interface{}{} for i := 0; i < type_.NumField(); i++ { m[type_.Field(i).Name] = elem.Field(i).Interface() } fmt.Println(time.Now().Sub(t), m)}func Test2() { t := time.Now() persion := Body{"aaa", 2, 12.34} j, _ := json.Marshal(persion) fmt.Println(time.Now().Sub(t), string(j))}func Test3() { m := make(map[string]interface{}) t := time.Now() persion := Body{"aaa", 2, 12.34} j, _ := json.Marshal(persion) json.Unmarshal(j, &m) fmt.Println(time.Now().Sub(t), m)}func Test4() { t := time.Now() persion := Body{"aaa", 2, 12.34} ret, _ := Struct2Map(persion) fmt.Println(time.Now().Sub(t), ret)}func main() { Test1() Test2() Test3() Test4()}
package mainimport ( "fmt" "reflect" "time")type User struct { Id int64 Username string Password string Logintime time.Time}func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj) var data = make(map[string]interface{}) for i := 0; i < t.NumField(); i++ { data[t.Field(i).Name] = v.Field(i).Interface() } return data}func main() { user := User{5, "zhangsan", "pwd", time.Now()} data := Struct2Map(user) fmt.Println(data)}