You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:30:02