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

前端之家收集整理的这篇文章主要介绍了(二)碎碎念接口优化--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,最好使用标准的方式解析,不要用正则表达式解析,太不灵活了。

原文链接:https://www.f2er.com/json/288948.html

猜你在找的Json相关文章