利用fastJson转化后出现类型异常的问题(关于BigDecimal 字段属性)

时间:2025-03-27 10:43:01

问题描述: 实体属性是 BigDecimal ,利用fastJson转化成map后发现整数的变为了Integer ,小数还是BigDecimal,double与 float的小数 也变为了 BigDecimal;

原因: fastjson缺省反序列化带小数点的数值类型为BigDecimal; 整数,默认为Integer

1.临时解决方案:

(1)对于BigDecimal字段的属性 aa,转map后,获取的该属性时,做一个转换

注意判空: ("key") == null ? null : new BigDecimal(());

其他的类型也是先转为字符串,然后再转化成对应的类型

2.全局来改

JSON.DEFAULT_PARSER_FEATURE &= ~();

3.局部改

int disableDecimalFeature = JSON.DEFAULT_PARSER_FEATURE & ~();

String json = "....";
Class type = ;
(json, type, disableDecimalFeature);