fix: The validation of tag "options" is not working with int/uint type (#1969)

master
taobig 3 years ago committed by GitHub
parent c44edd7cac
commit 3fa8c5940d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -253,6 +253,10 @@ func (u *Unmarshaler) processFieldPrimitiveWithJSONNumber(field reflect.StructFi
return err return err
} }
if err := validateValueInOptions(opts.options(), v); err != nil {
return err
}
if fieldKind == reflect.Ptr { if fieldKind == reflect.Ptr {
value = value.Elem() value = value.Elem()
} }

@ -1170,6 +1170,20 @@ func TestUnmarshalWithIntOptionsIncorrect(t *testing.T) {
assert.NotNil(t, UnmarshalKey(m, &in)) assert.NotNil(t, UnmarshalKey(m, &in))
} }
func TestUnmarshalWithJsonNumberOptionsIncorrect(t *testing.T) {
type inner struct {
Value string `key:"value,options=first|second"`
Incorrect int `key:"incorrect,options=1|2"`
}
m := map[string]interface{}{
"value": "first",
"incorrect": json.Number("3"),
}
var in inner
assert.NotNil(t, UnmarshalKey(m, &in))
}
func TestUnmarshalWithUintOptionsCorrect(t *testing.T) { func TestUnmarshalWithUintOptionsCorrect(t *testing.T) {
type inner struct { type inner struct {
Value string `key:"value,options=first|second"` Value string `key:"value,options=first|second"`

Loading…
Cancel
Save