2015-11-04 61 views
1

“这是数据转换成JSON格式的代码”我从移动获取联系人的细节,当我尝试转换成JSON格式应用程序崩溃

private void jsonformatdata() { 
     // TODO Auto-generated method stub 
     JSONArray arr = new JSONArray(); 
     try { 
      for(int i=0;i<=contactModel.size();i++) 
      { 
       JSONObject jsonAdd = new JSONObject(); 
       jsonAdd.put("strModifiedDate", localTime); 
       jsonAdd.put("contactName", contactModel.get(i).getPhonebookName()); 
       jsonAdd.put("uniqueContactID", contactModel.get(i).getContactId()); 
       JSONArray phone = new JSONArray(); 
       if(contactModel.get(i).getHomeNummber() == null) 
       {} 
       else 
       {JSONObject num1 = new JSONObject(); 
       num1.put("",contactModel.get(i).getHomeNummber()); 
       phone.put(num1);} 
       if(contactModel.get(i).getMobileNummber()==null) 
       {} 
       else 
       {JSONObject num2 = new JSONObject(); 
       num2.put("",contactModel.get(i).getMobileNummber()); 
       phone.put(num2);} 
       if(contactModel.get(i).getWorkNummber()==null){} 
       else{JSONObject num3 = new JSONObject(); 
       num3.put("",contactModel.get(i).getWorkNummber()); 
       phone.put(num3);} 
       if(contactModel.get(i).getOtherNummber()==null){} 
       else{JSONObject num4 = new JSONObject(); 
       num4.put("",contactModel.get(i).getOtherNummber()); 
       phone.put(num4);}    
       jsonAdd.put("phone",phone); 
       arr.put(i,jsonAdd); 
      } 
      String datatosend = arr.toString(); 
      Log.e(datatosend, ""+datatosend); 

     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

错误信息,这是我在logcat的

得到
java.lang.RuntimeException: Unable to start activity 

ComponentInfo {com.example.vchat/com.example.vchat.Friends_listing}: java.lang.IndexOutOfBoundsException:无效索引0,大小为0

+0

请任何人快速回复,以便我可以提前修复它... thanx –

+0

ArrayIndexOutofBound表示您正在从列表位置获取不存在的数据。而不是<=使用

回答

2

你需要转换:

for(int i=0;i<=contactModel.size();i++)

到:

for(int i=0;i<contactModel.size();i++)

数组中的元素从零开始直到大小。可能你的contactModel是空的。

而且下一次请包括完整的堆栈跟踪,如果你有一个,在这个问题。

+0

thanku先生你的快速反应和给你的宝贵时间................后你建议它开始工作,但在JSON数据我没有获得任何价值只有我得到了反应[]。 –

+0

@NikhilSingh你没有得到任何json值,因为你的contactModel是空的。你应该先解决这个问题。 – dan

2

您需要更改

for(int i=0;i<=contactModel.size();i++) 

for(int i=0;i<contactModel.size();i++) 
+0

这是我的联系人模型类... –