关于net.sf.json在处理字符串时,丢失数据精度的问题

最近在生产环境出现了对账不平的问题,锁定到了交易之后查看日志,发现交易金额在传输过程中出现了丢失精度的问题,通过本地debug发现,是net.sf.json在将json字符串转换成JSONObject的时候,将数据值没有加双引号的金额字段识别成了浮点型,并且在转换过程中,丢失了精度。
经过网上资料的查询和尝试,通过以下方法对这个问题进行了解决。
由于项目已经投产运行,当然要以最小的改动解决根本问题。

引入新的json处理包,alibaba的fastjson。当然并不需要推翻原有的net.sf.json,只是在将json字符串转换成object的地方修改即可,代码如下:

	com.alibaba.fastjson.JSONObject obj1= com.alibaba.fastjson.JSONObject.parseObject(plain);
//		JSONObject obj= JSONObject.fromObject(plain); //替换掉这一行

这样,如果你后面用到了JSONObject的这个obj,那你可以不用注释它,只是在给model赋值的时候用fastjson的obj1里面的金额字段就可以了

maven注入fastjson

	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>fastjson</artifactId>
	    <version>1.2.4</version>
	</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值