为啥对于每个循环都不适用于 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】:

因为JSONArrayclass 没有实现Iterable 接口。

【讨论】:

【参考方案3】:

因为 JSONArray 派生自 Object 并且 foreach 期望集合是可迭代的。

【讨论】:

以上是关于为啥对于每个循环都不适用于 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

Cuda内核中的大型for循环不适用于大型数组[关闭]

为啥 If 语句不适用于 selenium 中的 for 循环

Ienumerable concat不适用于每个循环[重复]

无法在每个循环中从 JSON 访问数组

增强的 for 循环不适用于将值分配给数组(Java)[重复]

对于循环不适用于 pandas.read_csv