2011-09-08 15 views
5

Hoy, estoy tratando de optimizar mi JSONArray con respecto a android developer documentation. Se suponía que debía optimizarlo, pero aparece un mensaje de error.Optimice 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")); 
} 

Y he optimizado por encima de codificación que siga

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

Por desgracia, me dieron el siguiente mensaje de error que ocurren en "infojson) {"

Sólo se puede repetir más de una array o una instancia de java.lang.Iterable

Respuesta

8

No puede usar JSONArray con la sintaxis ya que no implementa la interfaz Iterable. Como nota al margen, la mejora del micro rendimiento que obtenga probablemente no afecte el rendimiento de su aplicación, ya que los resultados de JSON que se devuelven desde WebService generalmente no son de gran tamaño.

+0

Mi JSON es de aproximadamente 650,000 bytes. ¿También cuenta como 'no grande '? – choz

2

Obtiene ese error porque JSONArray no implementa Iterableinterface.

En resumen, no hay una manera clara de solucionar esto; Tendría que serializar el JSONObjects en su clase personalizada.

Para ahorrarle tiempo, usar (Object one: all) over (i=0; i < all.getLength(); i++) no le proporcionará ninguna mejora en el tiempo de ejecución.

Simplemente manténgase en el ciclo normal.