一 问题描述
通过打印,发现服务器已经返回了数据,但是使用GSON解析有问题,没有报异常。经过反复确认,本地代码没有问题。
二 分析过程
1 首先怀疑GSON框架有问题,更换fastjson,仍然有问题。
2 怀疑GSON版本太低,更新到最新2.8.6,仍然有问题。
3 因为本该打印的地方没有打印,怀疑线程池把打印吃掉了。在主线程使用本地String去测试GSON,最终发现是Jsonbean定义有问题。
三 问题确认
1 确认ExecutorService线程池会把异常打印吃掉,不会抛出来。
https://blog.csdn.net/u012803478/article/details/80196696
2 确认Jsonbean里面一个字段定义为int,但是实际数据超过int范围。导致GSON解析的时候抛出异常。
四 问题解决
将Jsonbean里面的int全部改为String
五 经验教训
1 使用线程池时要警惕异常是否被吃掉
2 定义Jsonbean时,尽量使用String,规避服务器数据错误和减少后续维护更改。