java如何处理来自同一端点的不同JSON响应
为了成功响应,我有以下json结构
{
"status": "Successful",
"data": [
{
"A": "apple",
"B": "Bat",
"Colors": [
{ "G": "gold"},
{"P": "pink"}
}],
"message": "Action was successful"
}
下面我可以称之为成功的失败响应
{
"status": "Successful",
"data": {
"message": "Error retrieving list",
"code": "3000",
"status": "nok"
},
"message": "Action was successful"
}
当我得到第二个响应时,响应代码为200,主列表的POJO类完全不同。 这就是为什么我得到这个错误“预期的BEGIN_数组,但被BEGIN_对象”我如何处理这个错误,以便在onError()方法中显示一个错误toast消息?我正在使用RxJava,并用MVP架构进行了改造。 这是互动者
public class EventListInteractor {
private EventListContract.EventListener eventListener;
public EventListInteractor(EventListContract.EventListener eventListener){
this.eventListener = eventListener;
}
public void listEvents_(Context context, String header, EventRequest eventRequest){
listEventsObserver(header,eventRequest).subscribeWith(listEventsObservable(context));
}
public Observable<EventResponseModel> listEventsObserver(String header, EventRequest eventRequest){
return RetrofitInstance.getRetrofitInstance().create(NetworkService.class)
.listEvents("Token" + header, eventRequest)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
//
}
public DisposableObserver<EventResponseModel> listEventsObservable(final Context context){
return new DisposableObserver<EventResponseModel>(){
@Override
public void onNext(EventResponseModel eventResponseModel) {
if(eventResponseModel.getStatus().equalsIgnoreCase("Successful")){
eventListener.onEventListSuccess(context, eventResponseModel);
}else {
eventListener.onFailure("Error");
}
}
@Override
public void onError(Throwable e) {
Log.d(EVENT_LIST, "Error" + e);
if(e instanceof HttpException){
if (((HttpException) e).response().code() != 200){
e.getMessage();
eventListener.onFailure("Unable to connect to. Please try again later");
}
}
e.printStackTrace();
}
@Override
public void onComplete() {
Log.d("LIST", "Completed");
}
};
}
}
共 (0) 个答案