有关json-lib2.4在转java对象时超过7位数的Double类型会出现科学计数法和精度丢失的问题

在做项目当中发现当通过json-lib来将json字符串转成对象时,超过7位数的Double类型会出现科学计数法和精度丢失的问题,
把json-lib-2.4-jdk15.jar源码下载下来,发现是数字类型的都转为number了,而不是BigDecimal,把这里改为调用createBigDecimal在打成jar包,就可以了,具体操作如下:

1. 第一步找到源码中的JSONObject类的 _fromJSONTokener( JSONTokener tokener, JsonConfig jsonConfig ) 方法

有关json-lib2.4在转java对象时超过7位数的Double类型会出现科学计数法和精度丢失的问题

2. 第二步通过 nextValue( jsonConfig )调用,找到类JSONTokener,将NumberUtils.createNumber(s)调用改为NumberUtils.createBigDecimal(s)即可
有关json-lib2.4在转java对象时超过7位数的Double类型会出现科学计数法和精度丢失的问题

3.用工具重新打好jar包,替换掉之前旧版的jar即可