【发布时间】:2021-04-12 04:53:01
【问题描述】:
这是我需要过滤的 Json 数据。
{
"id": 1,
"game_name": "Bắn cá 2021",
"game_menu": "Lời khuyên",
"subtitle": "Sử dụng chiến thuật ria đạn",
"description": "Chiến lược này phù hợp cho người mới bắt đầu. Để tiết kiệm đạn và tăng khả năng chiến thắng, bạn nên tiêu diệt cá nhỏ. Đây là một trong những cách chơi nổi tiếng. Nhiều người chơi bỏ qua những con cá nhỏ này và luôn nhìn vào những con cá lớn. Thật là sai lầm! Đối với người mới bắt đầu, đây không phải là một cách hay. Nếu bạn áp dụng lối suy nghĩ giống như những người chơi khác, bạn chắc chắn sẽ mất hết vốn!",
"image": null
},
{
"id": 2,
"game_name": "Bắn cá 2021",
"game_menu": "Lời khuyên",
"subtitle": "Bắn cá ngay khi chúng xuất hiện",
"description": "Khi nó xuất hiện, hãy nhắm ngay lập tức. Bằng cách này, bạn chắc chắn sẽ nhận được nhiều xu thay vì bắn theo được những con cá lớn.",
"image": null
},{
"id": 9,
"game_name": "Săn Cá Mập ",
"game_menu": "Lời khuyên",
"subtitle": "Những Điều Cần Lưu Ý Khi Chơi Game Bàn Cá Trực Tuyến",
"description": "1. Game bắn cá ăn tiền thật trực tuyến dựa trên giao diện đẹp, bắt mắt, nhạc nền sống động, màu sắc tươi sáng và sử dụng đồ họa 3D tinh tế, hình ảnh sắc nét. Người chơi sẽ trở thành một xạ thủ thực hiện chuyến đi săn dưới lòng đại dương sau khi tham gia.",
"image": null
},
{
"id": 10,
"game_name": "Săn Cá Mập ",
"game_menu": "Lời khuyên",
"subtitle": "Những Điều Cần Lưu Ý Khi Chơi Game Bàn Cá Trực Tuyến",
"description": "2 . Vũ khí của bạn là một khẩu súng để giết cá. Sau khi bắn hạ, mỗi con cá khác nhau sẽ cho bạn một số xu nhất định.",
"image": null
},
{
"id": 11,
"game_name": "Săn Cá Mập ",
"game_menu": "Lời khuyên",
"subtitle": "Những Điều Cần Lưu Ý Khi Chơi Game Bàn Cá Trực Tuyến",
"description": "3: Người chơi cần bỏ ra một số tiền để có thể mua đạn để bắn và đổi lại khi bạn có vũ khí trong tay thì việc bắn cá sẽ trở nên đơn giản hơn. Dễ bắn và khả năng kiếm được tiền sẽ cao hơn trông thấy.",
"image": null
}
这是我的“ViewModel”类
public class TipsViewModel extends ViewModel {
private static final String TAG = "TipsViewModel";
private Repository repository;
private MutableLiveData<List<TipsModel>> tipsList = new MutableLiveData<>();
@ViewModelInject
public TipsViewModel(Repository repository){
this.repository = repository;
}
public MutableLiveData<List<TipsModel>> getTipsList(){
return tipsList;
}
//This function is where i want to filter the data from json.
public void getTips(){
repository.getTips()
.flatMap(Observable::fromIterable)
.filter(result -> result.getGameName().equals("Bắn cá 2021"))
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> tipsList.setValue(result),
error -> Log.e(TAG,"getTips: "+ tipsList.toString()));
}
}
我想过滤从 json 获取的数据。我只使用“game_name”属性显示包含“Bắn cá 2021”的所有数据。我做的“getTips”函数有一些错误。
E/TipsViewModel: getTips: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
这是我第一次在android中使用rxjava。
【问题讨论】:
-
确保
result.getGameName()不为空 -
@DipaliShah 是的,它不为空。我不知道我的函数 getTips 的方式是否正确。有什么办法可以解决这个问题吗?
-
我认为 json 数据响应不是一个列表吗?它应该是 [ { }, { } ],你能确定它是一个列表吗?