org.json.JSONArray无法使用for-each循环的问题修复求助
修复org.json.JSONArray无法使用增强for循环的问题
问题根源
org.json.JSONArray类并未实现java.lang.Iterable接口,而Java增强for循环(for-each)仅支持数组或实现了Iterable的类型,因此直接遍历会触发类型不匹配的错误。
方案1:使用普通索引循环
这是最直接的修复方式,通过JSONArray的length()方法获取元素数量,再用索引逐个取出元素:
// 假设你的JSONArray对象是jsonArray JSONArray jsonArray = new JSONArray(yourInputJson); for (int i = 0; i < jsonArray.length(); i++) { // 根据实际元素类型转换,比如如果是JSONObject就用getJSONObject JSONObject item = jsonArray.getJSONObject(i); // 这里写你的映射逻辑,比如将item转换为自定义结构 }
方案2:转换为Iterable集合后使用增强for循环
如果偏好增强for循环的写法,可以先把JSONArray的元素转移到一个实现了Iterable的集合(比如ArrayList)中:
JSONArray jsonArray = new JSONArray(yourInputJson); List<JSONObject> itemList = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { itemList.add(jsonArray.getJSONObject(i)); } // 现在可以用增强for循环遍历 for (JSONObject item : itemList) { // 执行自定义结构的映射逻辑 }
方案3:Java 8+ Stream方式遍历
利用IntStream生成索引流,再映射为JSONArray的元素,适合更简洁的函数式写法:
JSONArray jsonArray = new JSONArray(yourInputJson); IntStream.range(0, jsonArray.length()) .mapToObj(jsonArray::getJSONObject) .forEach(item -> { // 处理元素并映射到自定义结构 });
内容的提问来源于stack exchange,提问作者Yazdan ZandiyeVakili
相关产品推荐
相关产品推荐

