在做一个读取本地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>