zoukankan      html  css  js  c++  java
  • 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、修改上游返回数据格式,为啥会出现同样的账户余额,一个用字符型,一个却用数值型?

  • 相关阅读:
    Cyclic Nacklace HDU
    Oulipo HDU
    Period HDU
    Blue Jeans POJ
    剪花布条 HDU
    最长公共前缀 CSU
    Clock Pictures CSU
    Number Sequence HDU
    Arrange the Bulls POJ
    Traveling by Stagecoach POJ
  • 原文地址:https://www.cnblogs.com/wujh88/p/9570591.html
Copyright © 2011-2022 走看看