diff --git a/extra/fuzzy_decoder.go b/extra/fuzzy_decoder.go index 25e95d7..29fd375 100644 --- a/extra/fuzzy_decoder.go +++ b/extra/fuzzy_decoder.go @@ -43,5 +43,5 @@ func (decoder *FuzzyIntDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterat default: iter.ReportError("FuzzyIntDecoder", "not number or string") } - *((*int)(ptr)) = iter.ReadInt() + *((*int)(ptr)) = int(iter.ReadFloat64()) } diff --git a/extra/fuzzy_decoder_test.go b/extra/fuzzy_decoder_test.go index 4fa5743..407c0ec 100644 --- a/extra/fuzzy_decoder_test.go +++ b/extra/fuzzy_decoder_test.go @@ -44,3 +44,10 @@ func Test_int_to_int(t *testing.T) { should.Nil(jsoniter.UnmarshalFromString(`100`, &val)) should.Equal(100, val) } + +func Test_float_to_int(t *testing.T) { + should := require.New(t) + var val int + should.Nil(jsoniter.UnmarshalFromString(`1.23`, &val)) + should.Equal(1, val) +}