如何从嵌套JSON对象中获取指定id对应的特定属性值?
问题原因
- 你的判断逻辑错误把数组下标
i和目标业务id做匹配,二者本质不是同一个值 - 你调用
PutDataIntoRecyclerView时传入的是全量数据列表wisataList,就算判断条件触发,渲染的还是所有数据,自然会返回全部值
正确实现方案
你需要匹配数组元素内部的id字段,匹配成功后单独取出对应对象做后续处理即可,示例代码如下:
@Override public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) { if (response.body() == null) return; // 空指针防护 JSONResponse jsonResponse = response.body(); Wisata[] wisataArray = jsonResponse.getData(); // 假设JSONResponse的data返回的是Wisata实体类数组 Intent intent = getIntent(); int targetId = intent.getIntExtra(HomeActivity.EXTRA_NUMBER, 0); Wisata targetWisata = null; // 遍历匹配元素自身的id字段,而非数组下标 for (int i = 0; i < wisataArray.length; i++) { if (wisataArray[i].getId() == targetId) { targetWisata = wisataArray[i]; break; // 匹配到就终止遍历减少性能消耗 } } if (targetWisata != null) { // 如果你要在RecyclerView里只展示该对象,把它封装为单元素列表传入即可 List<Wisata> singleItemList = new ArrayList<>(); singleItemList.add(targetWisata); PutDataIntoRecyclerView(singleItemList); // 如果你要单独取某个属性值,直接调用getter方法即可,示例: String nama = targetWisata.getNama(); int harga = targetWisata.getHarga(); // 取嵌套的Gambar对象属性示例 String gambarUrl = targetWisata.getGambar().getUrl(); } }
额外说明
如果你没有用实体类映射,而是直接用JSONObject解析,嵌套属性可以用targetObj.getJSONObject("Gambar").getString("url")的方式取值,记得给实体类配置完整的getter方法保证能正常读取嵌套对象的属性。
内容的提问来源于stack exchange,提问作者Untitled99
相关产品推荐
相关产品推荐

