• json转换导致金额失真问题解决


    平台的余额查询逻辑中,今天爆了个雷。因平台用户都是较大的商户,且资金一般都是整数(这也是埋雷这么久的原因吧),但今天有客户说他们今天充值金额有个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、修改上游返回数据格式,为啥会出现同样的账户余额,一个用字符型,一个却用数值型?

  • 相关阅读:
    hdoj 2063 过山车
    hdoj 2112 HDU Today
    hdoj 1874 畅通工程续
    hdoj 2544 最短路
    sound of the genuine
    复习webpack的常用loader
    node-sass安装报错
    react-debug
    react-router 4v 路由嵌套问题
    React 中使用sass
  • 原文地址:https://www.cnblogs.com/wujh88/p/9570591.html
Copyright © 2020-2023  润新知