2013-03-15 51 views
1

陣列目前,我與機器人接觸的工作,我想在它轉換爲JSON數組後這個聯繫人的網絡服務器,我能夠得到所有的聯繫人,但問題是當我打印JSON數組它只顯示最後一次contact.i認爲對象值不保留,我該如何解決這個問題?我只是發佈我的代碼如下。問題在Android通訊錄時轉換爲JSON在Android的

 JSONArray jsnConts=new JSONArray(); 
     JSONObject jsnMain= new JSONObject(); 
     ContentResolver cr =getContentResolver(); 
     Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     lengthh=cursor.getCount(); 

     JSONObject a[]=new JSONObject[lengthh]; 
     ArrayList<String>cnt2=new ArrayList<String>(); 
     contactarray=new String[lengthh][avalues.length]; 

     System.out.println(cursor.getCount()); 

     JSONObject jsnName=new JSONObject(); 
     int kk=0; 
     while (cursor.moveToNext()) 
     { 

     ArrayList<String>cnt1=new ArrayList<String>(); 
      displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));  
      id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 

      mail(id); 
      Ph_num(id); 

       for (int i=0; i<4; i++) 
      { 
       if(i==0) 
       { 
        cnt1.add("Name ="+displayName); 
        jsnName.put("Name", displayName); 
       } 
       if(i==1) 
       { 
        cnt1.add("id ="+id); 
        jsnName.put("id", id); 
       } 
       if(i==2) 
       { 
        cnt1.add("email ="+email_data); 
        jsnName.put("email", EMAIL); 
        jsnName.put("email1", EMAIL1); 
        jsnName.put("email2", EMAIL2); 
       } 
       if(i==3) 
       { 
        cnt1.add("PHONE_NUM_DATA ="+PHONE_NUM_DATA); 
        jsnName.put("ph1", PH_NUM); 
        jsnName.put("ph2", PH_NUM1); 
        jsnName.put("ph3", PH_NUM2); 
        jsnName.put("ph4", PH_NUM3); 

       } 
// jsnConts.put(jsnName); 
//jsnConts.put(kk, jsnName); 

      } 
      cnt2.addAll(cnt1); 

// System.out.println("test"+jsnName); 
      jsnConts.put(jsnName); 
// jsnConts.put(kk, jsnName); 
      kk++; 

     } 
     System.out.println("test"+jsnName); 
     System.out.println("testjsn"+jsnConts); 
// System.out.println("------"+a); 

回答

2

您不打印JSONArray,而是打印變量jsnName,它是一個JSONObject - 一個值。並且每次通過循環覆蓋它。你需要每次創建一個新的JSONObject循環,將每個完成的JSONObject添加到一個JSONArray中,並打印出來。

+0

感謝answer.what一個愚蠢的錯誤我犯了,感謝您指出。 – jithu 2013-03-15 14:51:40