为啥对于每个循环都不适用于 JSON 数组
Posted
技术标签:
【中文标题】为啥对于每个循环都不适用于 JSON 数组【英文标题】:Why for each loop is not applicable for JSON array为什么对于每个循环都不适用于 JSON 数组 【发布时间】:2016-06-16 17:35:07 【问题描述】:当我尝试解析一个 json 数组时,工作室给了我一个编译错误,指出 foreach 不适用于 json 数组。 虽然我知道如何获取所有对象并解析;我只是想知道为什么 foreach 不适用即使 json 数组是一个数组
【问题讨论】:
请出示一些代码。 添加部分代码 【参考方案1】:对于每个循环都是这样工作的 -
例如对于和整数类型ArrayList<Integer> list;
for (int x : list)
// process x here
但 JSONArray 可以在其中包含任何类型的值。
例如-
["name" : John, "name" : Joe, 1, false]
这是一个有效的 JSONArray,但它包含各种对象,即 JSONObject、Integer、Boolean。所以我们每次循环都会得到不同类型的值。
所以要在这个数组上应用 for each 循环,我们必须首先将所有内容都转换为 Object 类 -
for (Object o : myJsonArray)
这没有多大意义,需要大量无用的努力。
【讨论】:
【参考方案2】:因为JSONArray
class 没有实现Iterable
接口。
【讨论】:
【参考方案3】:因为 JSONArray
派生自 Object
并且 foreach 期望集合是可迭代的。
【讨论】:
以上是关于为啥对于每个循环都不适用于 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
为啥 If 语句不适用于 selenium 中的 for 循环
Ienumerable concat不适用于每个循环[重复]