当我尝试解析json数组时,工作室给了我一个编译错误,指出 foreach不适用于json数组。 虽然我知道如何获取所有对象并进行解析;我只是想知道为什么foreach不适用,即使json数组是一个数组
答案 0 :(得分:8)
因为JSONArray
类没有实现Iterable
接口。
答案 1 :(得分:6)
对于每个循环都是这样的 -
例如for和Integer类型ArrayList<Integer> list;
for (int x : list)
// process x here
但是JSONArray里面可以包含任何类型的值。
例如 -
[{"name" : John}, {"name" : Joe}, 1, false]
这是一个有效的JSONArray,但它包含各种对象,即JSONObject,Integer,Boolean。因此,每次循环时我们都会获得不同类型的值。
因此,要为此数组应用每个循环,我们必须先将所有内容强制转换为Object类 -
for (Object o : myJsonArray)
这没有多大意义,需要大量无用的努力。
答案 2 :(得分:2)
因为JSONArray
派生自Object
而foreach期望集合可以迭代。