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
相关产品推荐
相关产品推荐

