|
@@ -716,3 +716,46 @@ func IsWxBrowser(Request *http.Request) bool {
|
|
return false
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// data 转换成ret
|
|
|
|
+func Bind(data interface{}, ret interface{}) error {
|
|
|
|
+ v := reflect.ValueOf(ret)
|
|
|
|
+ if v.Kind() != reflect.Ptr {
|
|
|
|
+ return fmt.Errorf("ptr input ret needed as type as input type %s", v.Kind())
|
|
|
|
+ }
|
|
|
|
+ havdata := false
|
|
|
|
+ var bk interface{}
|
|
|
|
+ if v.Elem().Kind() == reflect.Slice {
|
|
|
|
+ t := reflect.Zero(reflect.TypeOf(v.Elem().Interface()))
|
|
|
|
+ bk = v.Elem().Interface()
|
|
|
|
+ v.Elem().Set(t)
|
|
|
|
+ havdata = true
|
|
|
|
+ }
|
|
|
|
+ _data, _ := json.MarshalIndent(data, "", " ")
|
|
|
|
+ err := json.Unmarshal(_data, ret)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ if havdata {
|
|
|
|
+ v.Elem().Set(reflect.ValueOf(bk))
|
|
|
|
+ }
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func InterfaceToStr(x interface{}) string {
|
|
|
|
+ switch st := reflect.ValueOf(x); st.Kind() {
|
|
|
|
+ case reflect.Uint, reflect.Uintptr, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
|
|
|
+ return strconv.FormatUint(uint64(st.Uint()), 10)
|
|
|
|
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
|
|
+ return strconv.FormatInt(int64(st.Int()), 10)
|
|
|
|
+ case reflect.Float32, reflect.Float64:
|
|
|
|
+ return strconv.FormatFloat(float64(st.Float()), 'g', -1, 64)
|
|
|
|
+ case reflect.Bool:
|
|
|
|
+ return strconv.FormatBool(st.Bool())
|
|
|
|
+ }
|
|
|
|
+ var ret string
|
|
|
|
+ _ = Bind(x, &ret)
|
|
|
|
+ return ret
|
|
|
|
+
|
|
|
|
+}
|