2011-09-08 78 views
5

今天,我試圖優化我的JSONArray關於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的實例

回答

8

您不能將JSONArray與該語法因爲它不實現Iterable接口。作爲一個側面說明,您獲得的微觀性能改進可能不會影響您的應用程序性能,因爲從WebService返回的JSON結果通常不會太大。

+0

我的JSON大約是650.000字節。它也算作「不大」嗎? – choz

2

由於JSONArray未實現Iterableinterface,所以發生該錯誤。

總之,沒有乾淨的方法來解決這個問題;你必須將JSONObjects序列化到你的自定義類中。

儘管爲了節省您的時間,但使用(Object one: all) over (i=0; i < all.getLength(); i++)不會給您任何運行時改進。

只需堅持正常的循環。