有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案