// Set FormValues to struct
func SetFormValueToStruct(values url.Values, structPtr interface{}) error {
// Get the pointer of struct
ptr := reflect.ValueOf(structPtr)
// Get the value of struct
value := ptr.Elem()
// Set value to struct field
valueType := value.Type()
for i := 0; i < value.NumField(); i++ {
jsonTag := valueType.Field(i).Tag.Get("json")
if value.Field(i).CanSet() == false {
return errors.New("cannot set value to field")
}
value.Field(i).Set(reflect.ValueOf(values.Get(jsonTag)))
}
return nil
}
// Example
func ExampleSetFormValueToStruct() {
// Form values
formValues := url.Values{}
formValues.Set("test1", "test1_value")
formValues.Set("test2", "test2_value")
// Struct that be wanted to set form values.
structPtr := &TestSetFormValueToStructStruct{}
// Set
structWithValuesPtr := apphttputil.SetFormValueToStruct(formValues, structPtr)
fmt.Printf("%v", structWithValuesPtr)
}
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)