加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 18:48:01 所属栏目:百科 来源:网络整理
导读:最近线上项目出现了gc异常(下篇详细介绍),后来知道fastjson存在漏洞,项目用的是旧的版本1.1.45版本,为了增加安全性,对fastjson进行了版本升级。结果出现更多的问题,客户端阅读器所有接口几乎全部挂掉。 自己app的客户端没有影响,但是一部分阅读器接

最近线上项目出现了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,最好使用标准的方式解析,不要用正则表达式解析,太不灵活了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读