Commit f59ccd3a authored by astaxie's avatar astaxie

Merge pull request #1043 from Hepri/develop

Added support to parse slices of ints and strings in ParseForm func
parents f988f035 0c31c2d6
...@@ -358,11 +358,32 @@ func ParseForm(form url.Values, obj interface{}) error { ...@@ -358,11 +358,32 @@ func ParseForm(form url.Values, obj interface{}) error {
} }
fieldV.Set(reflect.ValueOf(t)) fieldV.Set(reflect.ValueOf(t))
} }
case reflect.Slice:
if fieldT.Type == sliceOfInts {
formVals := form[tag]
fieldV.Set(reflect.MakeSlice(reflect.SliceOf(reflect.TypeOf(int(1))), len(formVals), len(formVals)))
for i := 0; i < len(formVals); i++ {
val, err := strconv.Atoi(formVals[i])
if err != nil {
return err
}
fieldV.Index(i).SetInt(int64(val))
}
} else if fieldT.Type == sliceOfStrings {
formVals := form[tag]
fieldV.Set(reflect.MakeSlice(reflect.SliceOf(reflect.TypeOf("")), len(formVals), len(formVals)))
for i := 0; i < len(formVals); i++ {
fieldV.Index(i).SetString(formVals[i])
}
}
} }
} }
return nil return nil
} }
var sliceOfInts = reflect.TypeOf([]int(nil))
var sliceOfStrings = reflect.TypeOf([]string(nil))
var unKind = map[reflect.Kind]bool{ var unKind = map[reflect.Kind]bool{
reflect.Uintptr: true, reflect.Uintptr: true,
reflect.Complex64: true, reflect.Complex64: true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment