diff --git a/settings/diff.go b/settings/diff.go index f5535b58..67d59f38 100644 --- a/settings/diff.go +++ b/settings/diff.go @@ -110,6 +110,13 @@ func MergeSettings(current Settings, new map[string]interface{}) *Settings { } if v, ok := new[name]; ok { + if reflect.TypeOf(v) != reflect.ValueOf(¤t).Elem().FieldByName(field.Name).Type() { + nv := reflect.New(reflect.ValueOf(¤t).Elem().FieldByName(field.Name).Type()) + mv, _ := json.Marshal(v) + json.Unmarshal(mv, nv.Interface()) + v = nv.Elem().Interface() + } + reflect.ValueOf(¤t).Elem().FieldByName(field.Name).Set(reflect.ValueOf(v)) } }