【已解决】 retrofit 反序列化 报错不提示具体位置
E onError
W com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 3493085782739496 at line 1 column 5477 path $.data[6].mid
W at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:227)
W at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:217)
W at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
W at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
W at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
W at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
W at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
W at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
W at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
W at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37)
W at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:25)
W at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:119)
W at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:218)
W at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
W at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41)
W at io.reactivex.Observable.subscribe(Observable.java:10903)
W at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
W at io.reactivex.Observable.subscribe(Observable.java:10903)
W at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
W at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
W at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
W at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
W at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
W at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
W at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
W at java.lang.Thread.run(Thread.java:761)
W Caused by: java.lang.NumberFormatException: Expected an int but was 3493085782739496 at line 1 column 5477 path $.data[6].mid
W at com.google.gson.stream.JsonReader.nextInt(JsonReader.java:1172)
W at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:225)
W ... 26 more
巴拉巴拉的报错,也不说是哪个接口报的错,这种情况下怎么找呢
1.如果之前没问题的话,是后端改了字段的类型,导致原来的json解析出错
2.后端自己的问题,相同的接口,返回的数据有概率出现类型不统一
3.自己的类型判断不够完善,参考这篇内容,增强json解析的容错率,无论你传什么类型,都能解析(8条消息) Android 解决Gson解析数据类型不匹配的崩溃问题 JSONException expect beauty but ...._android 跳过gson解析_KabunM的博客-CSDN博客
mid是怎么定义的,他是什么类型。JSON中mid是什么?在这个JSON的长度5477位置,这个数据有问题。
是不是有个数据是long的,你在Java层定义了int去接受?