-1

我有一个 a 的实例,JSONArray我只是好奇是否可以使用 for-each 构造按顺序处理每个元素。所以我尝试了:

for( Object jsonObj: jsonArray ) {
  System.out.println("JSONArray element: '" + ((JSONObject)jsonObj).toString() + "'");
}

令我惊讶的是,它奏效了。我认为我需要使用实现 Iterable 的类。

因此,如果您能回答我最初的问题(使用 for-each on JSONArray),那就太好了。还:

  • 第二个问题:它为什么有效?
  • 第三个问题:我应该对在运输代码中实际使用它持谨慎态度吗?

谢谢大家!

4

2 回答 2

0

for-each 循环语法是在 java 1.5 中引入的。它的目的是从明显的东西中清除你的代码,比如迭代器,它也切断了一些错误的可能性。

这种循环语句只适用于Iterable类,回答你的问题,因为它JsonArray是实现Iterable接口。

关于您的代码,我认为它也可以工作,如果您确切地说是 saisjsonObj的类型JSONObject,它不仅仅是一个Object. 通过这种方式,您可以消除循环体中容易出错的类型转换。

于 2013-02-25T16:24:28.283 回答
0

您可能知道,for each 循环仅适用于 Iterables 和数组

正如@Quirim 和@BrianRoach 所指出的,JSONArray 的原始 json.org 实现没有实现 iterable,但Gson 实现却实现了。

打算在 json.org 版本中实现它,但最后他们没有。

所以回答你的3个问题:

  1. 您必须使用实现可迭代的 Gson 或类似的 JsonArray 实现。
  2. 因为 JsonArray 是可迭代的。
  3. 不,你不应该。
于 2013-02-25T16:37:44.907 回答