2017-02-01 3 views
0

Ich möchte ein JSONArray bis zu seiner zweitletzten Position lesen. Wie kann ich das machen? Ich habe fast alles versucht, aber bis jetzt kein Ergebnis.Lesen Sie ein Array auf seine (Länge minus eins) Position

Mein JSON,

[{ 
    "subject_name": "Sociology-I", 
    "total_classes": "1", 
    "total_attended": "1", 
    "percentage": "100" 
}, { 
    "subject_name": "English-I", 
    "total_classes": "37", 
    "total_attended": "36", 
    "percentage": "97.297297297297" 
}, { 
    "subject_name": "Hindi -I", 
    "total_classes": "1", 
    "total_attended": "1", 
    "percentage": "100" 
}, { 
    "subject_name": "", 
    "total_classes": "3", 
    "total_attended": "3", 
    "percentage": "100" 
}, { 
    "subject_name": "Economics II", 
    "total_classes": "1", 
    "total_attended": "1", 
    "percentage": "100" 
}, { 
    "subject_name": "History-I", 
    "total_classes": "1", 
    "total_attended": "0", 
    "percentage": "0" 
}, { 
    "total_percentage": "95.454545454545" 
}] 

Nun, wenn ich

for (int i = 0; i <jsonArray.length(); i++) { 
    JSONObject jsonObject1 = jsonArray.getJSONObject(i); 
} 

Es mir Letztes Objekt gibt auch zB "total_percentage" .. Ich habe versucht,

i< jsonArray.length()-1 

auch, aber hat nicht für mich gearbeitet .. Was tun, wenn ich nicht "total_percentage" will. Ich brauche nur bis vorletztes Element oder Objekt

+0

Vergessen Sie Lösung, Ihre JSON ist nicht richtig strukturiert. Wenn Sie daran interessiert sind, Ihren JSON in ein besseres Modell zu strukturieren, kann ich dafür eine Antwort schreiben. –

+0

Ist es nicht möglich, dieses Array bis zu seiner zweitletzten Position zu lesen? –

+0

Es ist definitiv möglich. Aber warum, um eine Arbeit zu haben, wenn Sie die richtige Lösung haben können –

Antwort

0

Wie wäre:

for (int i = 0; i <jsonArray.length() - 1; i++) { 
JSONObject jsonObject1 = jsonArray.getJSONObject(i);} 
+0

Es funktioniert nicht .. Danach bekomme ich keine Daten .. BLANK SCREEN –

0

Try Code unten hoffe, es wird Ihnen helfen.

for (int i = 0; i <jsonArray.length(); i++) { 
    JSONObject jsonObject1 = jsonArray.getJSONObject(i); 
    jsonObject1.remove("total_percentage"); 
} 
+0

Hat überhaupt nicht funktioniert. Die gleiche Situation gefunden "ListView mit 7 Elementen" –

1

Im Idealfall sollte Ihre JSON sein wie

{ 
    "marks":[{ 
     "subject_name": "Sociology-I", 
     "total_classes": "1", 
     "total_attended": "1", 
     "percentage": "100" 
     },{ 
     "subject_name": "Sociology-I", 
     "total_classes": "1", 
     "total_attended": "1", 
     "percentage": "100" 
     } 
    ], 
    "total_percentage":98.4 
} 

dann

JSONArray marks = response.optJSONArray("marks"); 
//then iterate through marks 
//here response is your actual modified JSON 

JSONs sollen Ihre Daten strukturieren Kategorien nach, so ist es ein schlechtes Modell Gesamt Noten zu haben Objekt in einzelne Markierungsreihe.

Bearbeiten- Quick Fix Lösung für Ihr Problem - 1

int length = jsonArray.length() - 1; 
for (int i = 0; i < length; i++) { 
    JSONObject jsonObject1 = jsonArray.getJSONObject(i); 
} 

Quick Fix Lösung für Ihr Problem - 2

for (int i = 0; i <jsonArray.length(); i++) { 
    Object marksObject = jsonArray.opt(i); 
    if(marksObject instanceof JSONObject){ 
     JSONObject mark = (JSONObject) marksObject; 
    } 
} 
+0

Okay, ich werde es tun, aber können Sie bitte helfen mir diesmal .. bereits +1 geben Sie –

+0

Ich postete zwei Stellvertreter für Sie. –

+0

Quick Fix Nr. 1: Es funktioniert nicht .. Danach bekomme ich keine Daten .. BLANK SCREEN –

Verwandte Themen