能否迭代遍历JSONArray?

165

请查看此链接:https://dev59.com/_XA75IYBdhLWcg3wOWRd - yeradis
问题链接返回404错误。 - Rubén
2个回答

286

不能使用迭代器。

对于 org.json.JSONArray,你可以这样做:

for (int i = 0; i < arr.length(); i++) {
  arr.getJSONObject(i);
}

对于 javax.json.JsonArray,您可以执行以下操作:

for (int i = 0; i < arr.size(); i++) {
  arr.getJsonObject(i);
}

7
在每次迭代中调用arr.length()会浪费资源,因此最好将其存储为变量,并在循环中使用该变量。 - husayt
嗯,是的,但它每次都会是相同的值,但是使用变量会更好,这样就不必要了。 - Henrique C.
11
根据编译器而定,我认为这只是一个获取值的getter,其值不可从实例外部改变,设置变量只会分配更多内存 8-) 。 - Mathijs Segers
1
JsonArray 没有 .length() 方法,但是从 java.util.List 继承了 .size() 方法。https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html - Peter
他是在指 https://github.com/stleary/JSON-java/blob/master/JSONArray.java 吗? - Mike Stoddart
干得好......!! - Shridutt Kothari

5
您可以使用opt(int)方法并使用经典的for循环。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接