FastJson与Gson转换成json串丢失精度问题

大家好,最近在项目开发过程中碰到一个比较坑的问题,导致与后台服务器联调花了比较多的时间,所以在这里记录一下这个坑,如果有人碰到了,也可以提供了一个比较好的参考方法。

问题如下:我的javaBean对象存储了一个字段是float类型的,恰巧服务器传给我的一个值是以“.0”结尾的,当我用fastjson解析这个对象的时候,将解析完成后的json串发给服务器,期待返回正确的数据,但是很显然,失败了,经过多次比对我传的和服务器接收的才发现这个致命的问题,那就是fastjson将“.0”给干掉了。

为了验证Gson是否也有同样的问题,于是乎写了一段代码,打印日志来看看两者对待float类型丢失精度的问题,代码截图如下:
这里写图片描述

程序运行起来后,查看日志不难看出二者的区别:
这里写图片描述

fastjson将float类型的转成了int类型,丢失了精度,而Gson却准确的保留了数据的精度,那么这个问题在什么时候会给我们导致问题呢?比如在做验签的时候,我们本地生成的签名和我们传给服务器的数据,服务器生成的签名不一致,就是由这个问题导致的,所以希望大家以后在开发过程中能够注意到这些细小的问题,避免排查而浪费太多的时间。

如果你觉得我的文章对你有帮助,并且希望帮助更多人,欢迎分享并关注我的微信公众号“Android开发的奥秘”,或扫描识别下方的二维码,我会不定期的分享给大家更多有用的资讯,谢谢!

来自:http://blog.csdn.net/woshizisezise/article/details/52231338

猜你喜欢

转载自blog.csdn.net/u011213044/article/details/80454781