如何使用Retrofit从服务器识别JSON响应数据是否为空?

时间:2019-05-14 03:03:44

标签: android retrofit retrofit2

我正在从服务器检索数据列表,以使用翻新显示在android的recyclerview中。
检索工作正常,显示了调用的数据,没有问题。

但是问题是,我想检查我获取的数据是否为空,因为我想从此检查中执行一些操作。

我已经尝试过这段代码,但是它会不断检查是否仅 成功完成了请求,不是从服务器带来的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 :(得分:0)

在将Json映射到POJO之前,使用下面的代码。

DD/MM/YYYY

答案 1 :(得分:0)

首先检查响应的有效性,然后检查其内容,然后在该处进行其余工作:

@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();
    }
    });

答案 2 :(得分:0)

这可能对您有帮助。

@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();
    }
    });