2017-02-01 1 views
0

Я хочу прочитать JSONArray до его второй последней позиции. Как я могу это сделать? Я почти все пробовал, но до сих пор ничего не добился.Прочитайте массив на его (длину минус один) позицию

Мои 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" 
}] 

Теперь, когда я использую

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

Это дает мне последний объект тоже есть "total_percentage" .. Я пытался

i< jsonArray.length()-1 

также, но не работал для меня .. Что делать Если я не хочу «total_percentage». Мне нужно только до второго последнего элемента или объекта

+0

Забудьте о решении, ваш JSON не структурирован должным образом. Если вы заинтересованы в структурировании своего JSON в лучшую модель, я могу отправить ответ для этого. –

+0

Невозможно ли прочитать этот массив до его второй последней позиции? –

+0

Это определенно возможно. Но зачем работать, когда у вас есть правильное решение. –

ответ

0

Как насчет:

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

Не работает. После этого я не получаю никаких данных. BLANK SCREEN –

0

Try ниже код надеюсь, что это поможет.

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

Не работает вообще. В той же ситуации найден «ListView с 7 элементами» –

1

В идеале JSON должен быть как

{ 
    "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 
} 

затем

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

JSONs предназначены для структурирования данных в соответствии с категориями, поэтому его плохая модель, чтобы иметь общие знаки объекта в индивидуальный массив меток.

Edit- Быстрое решение Fix для вашей проблемы - 1

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

Быстрое решение Fix для вашей проблемы - 2

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

Хорошо, я сделаю это вот так, но могу у, пожалуйста, помогите мне на этот раз .. уже +1 givento вы –

+0

Я разместил для вас две альтернативы. –

+0

Quick Fix no 1: его не работает .. После этого я не получаю никаких данных. BLANK SCREEN –