当前位置: 代码迷 >> 综合 >> net.sf.json-lib包的JSONArray.fromObject()方法把字符串类型的json数组对象转化JSONArray,若有double or float类型数据会丢失精度
  详细解决方案

net.sf.json-lib包的JSONArray.fromObject()方法把字符串类型的json数组对象转化JSONArray,若有double or float类型数据会丢失精度

热度:45   发布时间:2023-11-23 14:08:24.0
在做一个读取本地JSON文件的需求中,首先读取本地JSON文件,得到jsonStr,使用net.sf.json-lib包的JSONArray.fromObject(jsonStr)方法把字符串类型的json数组对象转化JSONArray,
//1.把字符串类型的json数组对象转化JSONArray
JSONArray json = JSONArray.fromObject(jsonStr);
再对这个json数组进行遍历。实际写代码过程中发现:
value = 10329.355159505209 该项数据在经过JSONArray转换中丢失精度,变成10329.355,于是百度,有说因为net这个包转换会丢失精度,所以改用com.alibaba.fastjson包,依赖如下:
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.23</version>
</dependency>

然后转换过程改写为:

JSONArray json = JSONArray.parseArray(jsonStr);

改完就发现问题消失,牛逼,net.sf.json-lib包依赖如下:

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier>
</dependency>

 

  相关解决方案