Java 如何从JSON API过滤数据
我只想显示基于“主题名称”的“幸运7经典”数据。 这是我的通话功能Java 如何从JSON API过滤数据,java,android,json,api,filtering,Java,Android,Json,Api,Filtering,我只想显示基于“主题名称”的“幸运7经典”数据。 这是我的通话功能 public MutableLiveData<List<PrizesModel>> getPrize(){ final MutableLiveData<List<PrizesModel>> pData = new MutableLiveData<>(); Call<List<PrizesModel>> call = rfit.re
public MutableLiveData<List<PrizesModel>> getPrize(){
final MutableLiveData<List<PrizesModel>> pData = new MutableLiveData<>();
Call<List<PrizesModel>> call = rfit.retrofitBuilderPrize().getPrizes();
call.enqueue(new Callback<List<PrizesModel>>() {
@Override
public void onResponse(Call<List<PrizesModel>> call, Response<List<PrizesModel>> response) {
try {
List<PrizesModel> pList = response.body();
for (int i = 0; i < pList.size()-1; i++){
if (pList.get(i).getThemeName().equals("Lucky 7 Classic")){
pData.setValue(pList);
}
}
}catch (Exception e){
}
}
@Override
public void onFailure(Call<List<PrizesModel>> call, Throwable t) {
pData.setValue(null);
}
});
return pData;
}
它显示API中的所有数据,而不是您已经应用过滤器的所需值。有什么问题吗?什么不起作用?请注意,
catch(异常e){}
-空的catch块是一个大禁忌。您应该正确处理它,即如果没有其他内容,则至少记录它。@Thomas它仍然没有生效。。它仍然显示来自ApiAh的所有数据,我现在看到了:pData.setValue(pList)代码>-不要这样做。如果有匹配项,基本上就是返回整个列表。相反,您需要第二个只接收匹配元素的列表。您可以使用streams实现这一点,但我建议您首先尝试“传统”方式(创建一个空列表,添加匹配元素,然后在调用pData.setValue(yourNewList)
的循环之后)。
{
"id": 11,
"theme_name": "Lucky 7 Classic",
"choose": "SỐ 7",
"first_coin": "1000",
"second_coin": "2000",
"third_coin": "5000",
"theme_image": ""
},
{
"id": 12,
"theme_name": "Lucky 7 Classic",
"choose": "SỐ 7 MAY MẮN",
"first_coin": "250",
"second_coin": "500",
"third_coin": "750",
"theme_image": ""
},
{
"id": 20,
"theme_name": "Lucky 7 Ocean",
"choose": "Ba con cá bướm",
"first_coin": "300",
"second_coin": "600",
"third_coin": "900",
"theme_image": ""
},
{
"id": 21,
"theme_name": "Lucky 7 Ocean",
"choose": "Ba con Cá hề",
"first_coin": "250",
"second_coin": "500",
"third_coin": "750",
"theme_image": ""
}