2016-02-10 71 views
0

我得到一个字符串,我试图转换为JSONArray。 JSONArray的长度变好(如果它的100或5000)。但我得到“java.lang.IndexOutOfBoundsException:无效索引50,大小为50”。以下是我的代码。java.lang.IndexOutOfBoundsException:无效索引50,大小为50

try 
{ 
    JSONArray jsonArray = new JSONArray(returndResultForSNID); 
    System.out.println("jsonArray: "+jsonArray.length()); 
    for(int i = 0; i < jsonArray.length(); i++) 
    { 
     snid = jsonArray.getJSONObject(i).getString("snid"); 
     //number = jsonArray.getJSONObject(i).getString("phone");     
     phoneContactsDTOArrayList.add(new PhoneContactsDTO(contactNameArr.get(i).toString() , contactPhoneNumberArr.get(i).toString(), snid, ""));     
     //System.out.println("Could jsonArray parse malformed JSON: " + snid +" _> "+number); 
    } 

} 
catch (Exception e) 
{ 
    System.out.println("JSONArray error: " + e.toString()); 
} 
+2

索引的维数从0开始,从而尺寸50的具有收集装置的是最后一个元素具有49索引 – hahn

+1

的问题是,contactNameArr或contactPhoneNumberArr与您的jsonArray大小不一样。 – RvdK

回答

0

数组以0为基数。

这意味着,尺寸50的阵列具有索引0到49

contactNameArrcontactPhoneNumberArr可能比的jsonArray尺寸。特别jsonArray的尺寸大于51更大和其他中的一个具有50

+2

这个问题在op的代码中究竟在哪里?我似乎无法找到任何地方。 – Ferrybig

+1

答案确实无关紧要。用户没有检查索引是否存在于其正在使用的其他数组中。 – RvdK

+0

contactNameArr和contactPhoneNumberArr可能小于jsonArray的大小 –

相关问题