首页 新闻 会员 周边 捐助

fastJson转换BigDecimal的问题

0
悬赏园豆:50 [已解决问题] 解决于 2024-09-26 08:39

 12.0700转换为Json字符串,在从JSON转换回来之后变成12.7了。这是什么原因。

蜗牛旅行1899的主页 蜗牛旅行1899 | 菜鸟二级 | 园豆:285
提问于:2024-09-25 13:43
< >
分享
最佳答案
0

你这是什么版本的fastjson?

收获园豆:50
www378660084 | 小虾三级 |园豆:1025 | 2024-09-25 16:55

2.0.4,更新版本有用吗?若有用的话,可以换啊。

蜗牛旅行1899 | 园豆:285 (菜鸟二级) | 2024-09-25 17:20

@蜗牛旅行1899:
这是 fastjson2-2.0.53

www378660084 | 园豆:1025 (小虾三级) | 2024-09-25 17:23

@蜗牛旅行1899:
这是fastjson-1.2.83.jar都没你说这个情况

www378660084 | 园豆:1025 (小虾三级) | 2024-09-25 17:25
其他回答(1)
0

没懂,你是不是看错了,12.0700 json序列化,反序列化后是 12.07,大小没错啊

echo_lovely | 园豆:1507 (小虾三级) | 2024-09-25 13:52

我看错了,emm

支持(0) 反对(0) echo_lovely | 园豆:1507 (小虾三级) | 2024-09-25 13:52

将 12.0700 序列化后的字符串打印下看看,正不正常

支持(0) 反对(0) echo_lovely | 园豆:1507 (小虾三级) | 2024-09-25 13:55

@echo_lovely: 不正常,变成12.700了,不明白啥原因。

支持(0) 反对(0) 蜗牛旅行1899 | 园豆:285 (菜鸟二级) | 2024-09-25 14:29

@蜗牛旅行1899: 换个版本的fastjson呢?或者num.setScale(4, RoundingMode.HALF_UP),然后再toJsonString()试试

支持(0) 反对(0) echo_lovely | 园豆:1507 (小虾三级) | 2024-09-25 14:53

@echo_lovely: setScale是配置位数长度,属于从末尾对齐,这个有效数字中间的0都丢到姥姥家了

支持(0) 反对(0) thirteenthree | 园豆:216 (菜鸟二级) | 2024-09-25 14:57

@thirteenthree:
// 使用 SerializerFeature.WriteDecimalAsPlain 保持尾随零
String jsonString = JSON.toJSONString(value, SerializerFeature.WriteDecimalAsPlain);

我问gpt了

支持(0) 反对(0) echo_lovely | 园豆:1507 (小虾三级) | 2024-09-25 15:45

@echo_lovely: 这个应该试过了,没啥用吧,使用的是Feature.useBigDecimal。估计都差不多。

支持(0) 反对(0) 蜗牛旅行1899 | 园豆:285 (菜鸟二级) | 2024-09-25 17:25

@echo_lovely: 这个试了可以的。

支持(0) 反对(0) 蜗牛旅行1899 | 园豆:285 (菜鸟二级) | 2024-09-25 17:33

@echo_lovely: 

今天又有一个方法是JSONArray的toJavaList方法,在处理BigDecimal数据时,转换得到的也是把小数点移前了一位。说明不止有一个toJSONString方法。

在toJavaList方法中,没有Feature参数了。

支持(0) 反对(0) 蜗牛旅行1899 | 园豆:285 (菜鸟二级) | 2024-09-26 17:34

@echo_lovely: FastJson为啥需要多这个参数,有什么意义;

支持(0) 反对(0) thirteenthree | 园豆:216 (菜鸟二级) | 2024-09-29 10:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册