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 jsonLineItem = (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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With