优化JSonArray for Loop

时间:2011-09-08 00:07:57

标签: java android json

今天,我正在尝试针对android developer documentation优化我的JSONArray。我应该优化它,但会出现错误信息。

JSONArray infojson = json.getJSONArray("getInfo");          
for(int i=0;i < infojson.length();i++){                                     
    JSONObject e = infojson.getJSONObject(i);
    hm = new HashMap<String, Object>();
    hm.put(MYNAME, e.getString("uname"));
    hm.put(MYAGE, e.getString("uage"));
}

我已经优化了以上编码,如下所示

JSONArray infojson = jsonObject.getJSONArray("getInfo");
for (Object o : infojson ) {
    JSONObject jsonLineItem = (JSONObject) o;
    String myname = jsonLineItem.getString("uname");
    String myage = jsonLineItem.getString("uage");
}

不幸的是,我在“infojson”上发生了以下错误消息{“

只能迭代数组或java.lang.Iterable的实例

2 个答案:

答案 0 :(得分:8)

您不能将JSONArray与该语法一起使用,因为它没有实现Iterable接口。作为旁注,您获得的微观性能提升可能不会影响您的应用程序性能,因为从WebService返回的JSON结果通常不会很大。

答案 1 :(得分:2)

您收到该错误是因为JSONArray未实现Iterable interface

简而言之,没有干净的方法来解决这个问题;您必须将JSONObjects序列化到自定义类中。

为了节省您的时间,使用(Object one: all) over (i=0; i < all.getLength(); i++)将不会为您提供任何运行时改进。

坚持正常的循环。