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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值