Optimize JSonArray for Loop
Today, I'm trying to optimize my JSONArray regarding android developer documentation. I was supposed to optimize it but there is error message coming out.
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"));
}
And I've optimized above coding as follow
JSONArray infojson = jsonObject.getJSONArray("getInfo");
for (Object o : infojson ) {
JSONObject js开发者_开发技巧onLineItem = (JSONObject) o;
String myname = jsonLineItem.getString("uname");
String myage = jsonLineItem.getString("uage");
}
Unfortunately, I got the following error message occuring on "infojson ) {"
Can only iterate over an array or an instance of java.lang.Iterable
You can't use JSONArray with the that syntax as it doesn't implement Iterable interface. As a side note, the micro performance improvement you get probably won't affect your application performance as JSON results that are returned from the WebService are typically not large in size.
You're getting that error because JSONArray
doesn't implement the Iterable
interface
.
In short, there's no clean way to solve this; you'd have to serialize the JSONObjects
into your custom class.
To save you time though, using (Object one: all) over (i=0; i < all.getLength(); i++)
won't give you any runtime improvements.
Just stick to the normal for loop.
精彩评论