Frage Optimiere JSonArray für die Schleife


Heute versuche ich mein JSONArray bezüglich zu optimieren Android Entwickler Dokumentation. Ich sollte es optimieren, aber es kommt eine Fehlermeldung heraus.

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

Und ich habe oben Codierung wie folgt optimiert

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

Leider habe ich folgende Fehlermeldung erhalten "infojson) {"

Kann nur über ein Array oder eine Instanz von java.lang.Iterable iterieren


5
2017-09-08 00:07


Ursprung


Antworten:


Sie können JSONArray nicht mit dieser Syntax verwenden, da es nicht implementiert wird Iterabel Schnittstelle. Als Nebenbemerkung hat die Verbesserung der Mikroperformance wahrscheinlich keinen Einfluss auf die Anwendungsleistung, da JSON-Ergebnisse, die vom WebService zurückgegeben werden, normalerweise nicht groß sind.


8
2017-09-08 00:14



Sie bekommen diesen Fehler, weil JSONArray implementiert nicht die Iterable  interface.

Kurz gesagt, es gibt keinen sauberen Weg, dies zu lösen; Du müsstest das serialisieren JSONObjects in Ihre benutzerdefinierte Klasse.

Um Ihnen jedoch Zeit zu sparen, verwenden Sie (Object one: all) over (i=0; i < all.getLength(); i++) Sie erhalten keine Laufzeitverbesserungen.

Bleib einfach bei der normalen For-Schleife.


2
2017-09-08 00:17