package serialization import "reflect" func StructToMap(obj interface{}) map[string]interface{} { out := make(map[string]interface{}) v := reflect.ValueOf(obj) if v.Kind() == reflect.Ptr { v = v.Elem() } t := v.Type() for i := 0; i < v.NumField(); i++ { field := t.Field(i) key := field.Tag.Get("json") // 使用 json tag 作为字段名 if key == "" { key = field.Name } out[key] = v.Field(i).Interface() } return out }