fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[BUG] Deserialization on BigDecimal

Open Cooperzzy opened this issue 1 year ago • 2 comments

问题描述

反序列化BigDecimal时变成了负数,fastjson 1.2.83无此问题

环境信息

  • OS信息: [MacOS 12.7.4 M1 Pro 16 GB]
  • JDK信息: [Openjdk 17.0.6]
  • 版本信息:[Fastjson2 2.0.50]

重现步骤


import com.alibaba.fastjson2.JSON;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class Issue1204Mutated_504 {
    @Test
    public void testMutated() throws Exception {
        BigDecimal decimal = BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.ONE);
        String str = JSON.toJSONString(decimal);
        assertEquals("9223372036854775808", str);
        BigDecimal decimal1 = (BigDecimal) JSON.parseObject(str,BigDecimal.class);
        assertEquals(decimal.stripTrailingZeros(), decimal1);
    }
    
    @Test
    public void testMutated1() throws Exception {
        BigDecimal decimal = BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.TEN);
        String str = JSON.toJSONString(decimal);
        assertEquals("9223372036854775817", str);
        BigDecimal decimal1 = (BigDecimal) JSON.parseObject(str,BigDecimal.class);
        assertEquals(decimal.stripTrailingZeros(), decimal1);
    }

    @Test
    public void testMutate1() throws Exception {
    // 1.2.83
        BigDecimal decimal = BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.ONE);
        String str = com.alibaba.fastjson.JSON.toJSONString(decimal);
        assertEquals("9223372036854775808", str);
        BigDecimal decimal1 = (BigDecimal) com.alibaba.fastjson.JSON.parseObject(str,BigDecimal.class);
        assertEquals(decimal.stripTrailingZeros(), decimal1);
    }
}

期待的正确结果

9223372036854775808

相关日志输出

org.opentest4j.AssertionFailedError: Expected :9223372036854775808 Actual :-9223372036854775808

Cooperzzy avatar May 16 '24 11:05 Cooperzzy

https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.51-SNAPSHOT/ 问题已修复,请帮忙用2.0.51-SNAPSHOT版本验证

wenshao avatar May 16 '24 23:05 wenshao

验证已修复,辛苦温少

Cooperzzy avatar May 18 '24 05:05 Cooperzzy

https://github.com/alibaba/fastjson2/releases/tag/2.0.51 问题已修复,请用新版本

wenshao avatar Jun 01 '24 10:06 wenshao