解决使用GsonFromat插件生成实体类后造成的一个bug
Posted Tobey_r1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决使用GsonFromat插件生成实体类后造成的一个bug相关的知识,希望对你有一定的参考价值。
解决使用GsonFromat插件生成实体类后造成的一个bug
关于
本篇也是简易音乐系列文章之一,上午的时候轮播图加载网易云音乐接口还能正常使用,下午想记录的时候程序一直提示系统繁忙,请稍后再试,但是我看console里面是获取到了banner数据,后来打印这个异常内容,提示如下:
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 2489379705 at line 1 column 7261 path $.banners[4].targetId
这不就是json解析异常问题吗,还记得之前文章里面对onError方法进行了特殊判断吗,如下:
/**
* 新增方法实现onError方法的返回提示(通用接口返回)
*/
public static class OnCallback<T> implements Observer<T> {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(T t) {
}
@Override
public void onError(Throwable e) {
if (!isNetWorkActive(App.getInstance())){
ToastUtils.show("网络不给力,请检查网络");
return;
}
if(e instanceof ConnectException){
ToastUtils.show("服务器连接失败,请稍后再试");
}else if(e instanceof SocketTimeoutException){
ToastUtils.show("服务器连接超时,请稍后再试");
}else{
ToastUtils.show("系统繁忙,请稍后再试");
}
}
@Override
public void onComplete() {
}
}
修改一下,添加json解析失败的一些监听:
@Override
public void onError(Throwable e) {
if (!isNetWorkActive(App.getInstance())){
ToastUtils.show("网络不给力,请检查网络");
return;
}if (e instanceof JsonParseException || e instanceof JSONException || e instanceof ParseException){
ToastUtils.show("数据解析错误");
}else if(e instanceof ConnectException){
ToastUtils.show("服务器连接失败,请稍后再试");
}else if(e instanceof SocketTimeoutException){
ToastUtils.show("服务器连接超时,请稍后再试");
}else{
ToastUtils.show("系统繁忙,请稍后再试");
}
}
然后我再运行项目,果然报的是"数据解析错误":
我们看到之前提示的Expected an int but was 2489379705 at line 1 column 7261 path $.banners[4].targetId
,修改我们的banner_bean实体类里面的targetId为long,ok问题解决:
所以说,对gosnformat插件使用也不要完全放心,毕竟说不准就会出现这种字段类型的错误。
以上是关于解决使用GsonFromat插件生成实体类后造成的一个bug的主要内容,如果未能解决你的问题,请参考以下文章