Как определить, являются ли данные ответа JSON пустыми или нет на сервере с помощью Retrofit? - PullRequest
0 голосов
/ 14 мая 2019

Я получаю список данных с сервера, который будет отображаться в программе просмотра настроек в Android с использованием дооснащения.
Поиск работает нормально, отображаемые данные отображаются без проблем.

Но проблема в том,, Я хочу проверить, являются ли данные, которые я получаю, пустыми или нет, потому что я хочу выполнить некоторые действия из этой проверки.

Я пробовал этот код, но он продолжает проверять только успешновыполните запрос, не содержимое данных JSON, которое оно принесло с сервера.

getData.enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, Response<Model> response) {

if (response.body() != null){
Toast.makeText(getApplicationContext(), "Data is not empty", Toast.LENGTH_LONG).show();
} else {
// want to do some action here after the checking
Toast.makeText(getApplicationContext(), "Data isempty", Toast.LENGTH_LONG).show();
}
someList = new ArrayList<ModelItem>();
someList= response.body().getItem();
adapter= new Adapter(getApplicationContext(), someList);

recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}

@Override
public void onFailure(Call<Model> call, Throwable t) {
Toast.makeText(getApplicationContext(), getString(R.string.error_connection), Toast.LENGTH_LONG).show();
}
});

Я хочу проверить внутренний ответ, если он пустой или нет, спасибо

Ответы [ 3 ]

0 голосов
/ 14 мая 2019

Сначала проверьте правильность ответа, затем его тело, а затем выполните оставшуюся часть работы:

@Override
    public void onResponse(Call<Model> call, Response<Model> response) {

    if ( response.body() != null){
    someList = new ArrayList<ModelItem>();
    someList= response.body().getItem();
    adapter= new Adapter(getApplicationContext(), someList);

    recyclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();
    } else {
    // want to do some action here after the checking
    Toast.makeText(getApplicationContext(), "Data isempty", Toast.LENGTH_LONG).show();
    }

    }

    @Override
    public void onFailure(Call<Model> call, Throwable t) {
    Toast.makeText(getApplicationContext(), getString(R.string.error_connection), Toast.LENGTH_LONG).show();
    }
    });
0 голосов
/ 14 мая 2019

Это может вам помочь.

@Override
public void onResponse(Call<String> call, Response<String> response) {

  String responseBody = response.body();

   if(!responseBody.isEmpty()){
      // Create here  Json via Gson to POJO classes...
               try {
                        Gson gson = new Gson();
                        Type type = new TypeToken<List<Model>>() {
                        }
                                .getType();
                        objModel= gson.fromJson(responseBody, type);
                    } catch (JsonSyntaxException e) {
                        e.printStackTrace();
                    }

   }
   else{
       // empty response...
   }

    }
    @Override
    public void onFailure(Call<Model> call, Throwable t) {
    Toast.makeText(getApplicationContext(), getString(R.string.error_connection), Toast.LENGTH_LONG).show();
    }
    });
0 голосов
/ 14 мая 2019

используйте приведенный ниже код, прежде чем сопоставлять Json с POJO.

String response = basicResponse.getResponse();
if(response!=null){
   String responseBody = response.body();
   if(!responseBody.isEmpty()){
      // non empty response, you can map Json via Gson to POJO classes...

   }
   else{
       // empty response...
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...