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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:48:15