(二)碎碎念接口优化--fastjson版本兼容问题

        最近线上项目出现了gc异常(下篇详细介绍),后来知道fastjson存在漏洞,项目用的是旧的版本1.1.45版本,为了增加安全性,对fastjson进行了版本升级。结果出现更多的问题,客户端阅读器所有接口几乎全部挂掉。

        自己app的客户端没有影响,但是一部分阅读器接口对json无法解析,查看原因,是因为fastjson版本升级到了1.2.28,而新的版本有新的特性。

        1 、接口参数结构不变的情况下,参数的位置改变,app端解析json是正规的解析方式,而阅读器端解析json采用的正则表达式解析,这样就灾难了。

        2 、新版本的fastjson对double float 类型精度处理和旧版本不一致。

        代码如下

JSONObject jsonObject = new JSONObject();
Double dou = new Double(5.0);
jsonObject.put("dou", dou);
System.out.println(JSON.toJSONString(jsonObject));

        旧版本输出{"dou", 5},因为结尾的.0 被截掉了,而新版本更加正式了,会输出{"dou",5.0},但对于阅读器采用正则表达式截取字段,就会出问题。


        综上

        客户端最好把全部关于业务逻辑的部分放到服务端,以便能扩展和修改。客户端一旦发版后,有些东西就写死了,所以客户端在做的时候也要想到兼容性问题。对于某些返回值的解析,如论是json还是xml,最好使用标准的方式解析,不要用正则表达式解析,太不灵活了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值