2011-09-08 21 views
5

Oggi sto cercando di ottimizzare il mio JSONArray per android developer documentation. Dovevo ottimizzarlo ma c'è un messaggio di errore in uscita.Ottimizza JSonArray for Loop

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")); 
} 

E ho ottimizzato al di sopra di codifica da seguire

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

Purtroppo, ho ottenuto il seguente messaggio di errore che si verificano sul "infojson) {"

possibile scorrere solo su un array o un'istanza di java.lang.Iterable

risposta

8

Non è possibile utilizzare JSONArray con la sintassi in quanto non implementa l'interfaccia Iterable. Come nota a margine, il miglioramento delle prestazioni micro che si ottiene probabilmente non influirà sulle prestazioni dell'applicazione poiché i risultati JSON restituiti dal servizio Web non sono in genere di grandi dimensioni.

+0

Il mio JSON è di circa 650.000 byte. Conta anche come 'non grande '? – choz

2

Si riceve questo errore perché JSONArray non implementa lo Iterableinterface.

In breve, non esiste un modo pulito per risolvere questo; dovresti serializzare lo JSONObjects nella tua classe personalizzata.

Per risparmiare tempo, utilizzando (Object one: all) over (i=0; i < all.getLength(); i++) non si otterranno miglioramenti di runtime.

Basta attenersi al ciclo normale.