Gson替换成FastJson遇到的坑

1、项目由于统一json解析,最后选择了FastJson导致与网页交互出现异常

问题定位:

1、替换解析方法后,发现网页不能显示数据,于是又添加了Gson转换为json串的方法,重新编译apk

2、正常运行,数据无法显示,于是加上断点,在传递给网页的数据时通过调试功能(右键->setValue)将loadUrl中的数值替换成Gson转换,网页正常显示了数据

3、明显生成的json发生了变化,但是肉眼看上去没什么区别,于是遍历了两个字符串相同位置的值,如果不同则取其前后4个字符打印出新的字符串 int debugValue = 4(定义成变量,如果打印出的数据觉得不能区分可以用调试功能改变该值,其实写死就够用了)

str.subString(Math.max(0,  i - debugValue), Math.min(i + debugValue, str.length));

4、通过比较发现有一个key值莫名其妙的大写了 ,原来这是个组合词,拆分成也是两个单词,同事只是修改了变量让最后一个单词变成了小驼峰,而生成的get、set方法并未修改

5、在Entity中查找,发现 只有get、set方法比较接近key值,一查看FastJson默认还真是根据get方法序列化为json字符串的,修改get、set方法后功能正常

6、FastJson序列化源码跟踪,这里主要讲下调试跟踪的过程吧

1、加上断点,断点处设置条件(clazz.getSimpleName().equals(TargetEntity.class.getSimpleName()))

2、由于有缓存将writer对象处加上断点,并在调试区setValue设置成null

好吧,就写到这吧,该问题时间太久了,而且FastJson也比较常见 ,主要是两个调试方法为断点加上条件,以及重新设置value

 

你可能感兴趣的:(android)