Skip to content

[BUG] jsonArrary.getBigDecimal with boolean value #2745

@Cooperzzy

Description

@Cooperzzy

问题描述

fastjson 兼容使用getBigDecimal时报错,fastjson2无问题。

jsonArray.add(true);
jsonArray.getBigDecimal(0); // exception

环境信息

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

重现步骤

import com.alibaba.fastjson2.JSONArray;
import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import java.math.BigInteger;

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

public class fastjson_Issue673Mutated_310 {
    @Test
    public void mutatedTest() throws Exception {
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(true);
        assertEquals(BigDecimal.ONE, jsonArray.getBigDecimal(0));
    }
    @Test
    public void mutatedTest_fj() throws Exception {
        com.alibaba.fastjson.JSONArray jsonArray = new com.alibaba.fastjson.JSONArray();
        jsonArray.add(true);
        assertEquals(BigDecimal.ONE, jsonArray.getBigDecimal(0));
    }
}

相关日志输出

com.alibaba.fastjson.JSONException: Can not cast 'class java.lang.Boolean' to BigDecimal
at com.alibaba.fastjson.JSONArray.getBigDecimal(JSONArray.java:213)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions