json转换导致金额失真问题解决
2024-09-28 21:26:50
平台的余额查询逻辑中,今天爆了个雷。因平台用户都是较大的商户,且资金一般都是整数(这也是埋雷这么久的原因吧),但今天有客户说他们今天充值金额有个0.63的零头,但为何页面展示的账户余额零头却只是0.6?
debug跟了下代码,用测试数据貌似没有问题:
用了客户说的充值金额再试了下,不好了:
果然是把后面的3分钱吃了---虽然3分钱是小钱,但搞支付的哪怕1分钱都得明明白白才行!
项目引用的处理json的jar包是常用的net.sf.json:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
很明显,是源数据串转为json对象时,出现了数值格式的useableBanlance丢位失真,但字符格式的balance没有出问题!
没时间进去看源代码,直接重新引入fastjson:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
然后将处理json的语句做了相应的方法变更,重新用客户的数据跑了一下,终于靠谱了:
果断换成fastjson,重新打包更新,把这个问题对付了过去。
接下来的工作:
1、清查所有json处理的相关代码,尽快完成jar包方法替换,最终摈弃net.sf.json,也许存在即真理,但我不想去证明这个真理了!
2、修改上游返回数据格式,为啥会出现同样的账户余额,一个用字符型,一个却用数值型?
最新文章
- C语言学习 第四次作业总结
- POJ 1113:Wall
- EWM一个仓库号对应ERP多个PLANT的配置
- android源码在线查看
- java开发bug 在启动Tomcat 6.0时发现第一条信息便是
- Spring使用拦截器支持国际化(转)
- oracle 组函数
- LCS最长公共子序列
- Umbraco中的权限体系结构
- cocos2d-x3.0 ListView
- Python入门之中文乱码
- hdu_3564_Another LIS(线段树+LIS)
- Linux核心命令使用方法
- [POJ2259]Team Queue (队列,模拟)
- VS2017不能弹出安装界面的原因.
- SAP abap 语句、命令 语法查询备用
- fiddler抓不到chrome浏览器的请求
- 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板
- Go 接口(interface)
- 扩展layui中的自带字体图标