今天,我正在尝试针对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的实例
答案 0 :(得分:8)
您不能将JSONArray与该语法一起使用,因为它没有实现Iterable接口。作为旁注,您获得的微观性能提升可能不会影响您的应用程序性能,因为从WebService返回的JSON结果通常不会很大。
答案 1 :(得分:2)
您收到该错误是因为JSONArray
未实现Iterable
interface
。
简而言之,没有干净的方法来解决这个问题;您必须将JSONObjects
序列化到自定义类中。
为了节省您的时间,使用(Object one: all) over (i=0; i < all.getLength(); i++)
将不会为您提供任何运行时改进。
坚持正常的循环。