Map<String,Object> map = new HashMap<>();
map.put("param",12.01);
map.put("param2",12.00);哦
System.out.println(JSON.toJSONString(map));
预想输出结果:{"param":12.01,"param2":12.00},但是最后的结果是:{"param":12.01,"param2":12}
原因是:fastjson-1.1.27 版本 在序列化时 DoubleSerializer.write(...) 中 判断 “.0” 结尾的doubleText 会被直接截掉,1.2.31版本时已经增强,需要同时满足
if(isEnabled(SerializerFeature.WriteNullberAsZero) && doubleText.endWith(".0")){
doubleText = doubleText.substring(0,doubleText.length()-2);
}
总结:在使用第三方jar 时需要我们留意使用版本,尽可能使用最新版本的前一至三稳定版本。