“这是将数据转换成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

最佳答案

您需要转换:

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

至:

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

数组中的元素从零开始一直到大小。您的contactModel可能为空。

另外,如果您有一个完整的堆栈跟踪,那么下次请在问题中提供。

10-06 03:40