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

Android中如何检查JSON对象中是否已存在指定值?

问题修复:检查JSON数组中是否存在指定名称

目标JSON结构

{
    "info": [
    {
      "name": "A"
    }, 
    {
       "name": "B"
    },
    {
       "name": "C"
    }]
}

原错误代码

JSONObject obj = new JSONObject(response);
JSONArray jsonArray = obj.getJSONArray("info");
for (int i = 0; i < jsonArray.length(); i++) {
   JSONObject jsonObject = jsonArray.getJSONObject(i);
   String s = jsonObject.getString(name);
   if(s.equal("C")) {
      //do something
   }
}

修复后的代码

JSONObject obj = new JSONObject(response);
JSONArray jsonArray = obj.getJSONArray("info");
// 标记是否找到目标名称
boolean isFound = false;
for (int i = 0; i < jsonArray.length(); i++) {
   JSONObject jsonObject = jsonArray.getJSONObject(i);
   // 使用字符串常量"name"作为键
   String s = jsonObject.getString("name");
   // 调用正确的equals方法,匹配目标值"A"
   if(s.equals("A")) {
      isFound = true;
      // 找到后提前跳出循环,提升效率
      break;
   }
}
// 根据结果执行后续逻辑
if(isFound) {
    // do something
}

错误点说明

  • 键名未用字符串常量:jsonObject.getString(name)中的name未定义,需改为"name"——JSON的键是字符串类型,必须用双引号包裹的常量来获取对应值。
  • 字符串比较方法错误:Java中字符串相等比较要调用equals()方法,原代码写的equal()是拼写错误,并非String类的合法方法。
  • 逻辑与需求不符:你的需求是检查是否存在名称“A”,但原代码判断的是"C",需将判断值改为"A"。
  • 可选优化:找到目标值后用break跳出循环,无需遍历整个数组,能提升执行效率。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:20:02