2017-02-01 40 views
0

我想讀一個JSONArray直到其倒數第二個位置。我怎樣才能做到這一點?到現在爲止,我幾乎試過一切,但沒有結果。讀取一個數組到其(長度減1)的位置

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

它不工作..在此之後,我沒有得到任何數據..空白屏幕 –

0

試試下面的代碼希望它會幫助你。

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是指根據分類來組織你的數據,因此它的一個壞榜樣,以共有標誌着對象個體標記數組。您的問題

編輯 - 快速修復解決方案 - 1

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

快速修復解決您的問題 - 2

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

好吧我會這樣做,但你可以請幫助我這次..已經+1給你 –

+0

我發佈了兩個替代品給你。 –

+0

快速修復否1:它不工作..在此之後,我沒有收到任何數據..空白屏幕 –