欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-26 16:04:15
...

最近在生产环境出现了对账不平的问题,锁定到了交易之后查看日志,发现交易金额在传输过程中出现了丢失精度的问题,通过本地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>
相关标签: 坑与填坑