本文主要是介绍一个由PROGUARD与FASTJSON引起的血案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个由PROGUARD与FASTJSON引起的血案
更多内容请看这里:
https://ahangchen.gitbooks.io/windy-afternoon/content/
更新微信sdk导致ComposeData中的内部类ComposeDataSender方法被混淆
根本原因,fastjson使用姿势不对。
问题描述:
一个发件人列表里,应当呈现的数据(这里命名为ComposeData)为空
(1)业务逻辑层
获取发件人列表时,如果Composedata超时,会从网络重新拉取Json格式的ComposeData,拉取后利用FastJson的toString()方法,将ComposeData写入DB。
混淆情况下,toString()生成的json字符串会缺少alias字段。
定位问题到FastJson的toString()。
(2)FastJson层
FastJson执行JSON类的toString()方法时,
对普通的Object对象(这里是ComposeDataSender),会将这个对象当做JavaBean对象处理,
在JavaBeanSerializer中,找到这个对象的getter方法,
来确定要生成的Json格式数据中,K-V的值。
在JavaBeanSerializer中打l
这篇关于一个由PROGUARD与FASTJSON引起的血案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!