2012-07-14 32 views
1

有可能在ArrayList中不可能放大內容,然後如果你這樣做會給你null?JSONArray null content Java&Android

我插入一個帶有32個JSONObject的JSONArray,每個JSONObject都有名字和電話聯繫。

ArrayList<NameValuePair> nvp = new ArrayList<NameValuePair>(); 
nvp.add(new BasicNameValuePair("something", content)); 


public void phoneandname(Context c) { 

    if (cc.isOnline(c) == true) { 
     db = new Database(c); 

     Cursor phones = c.getContentResolver().query(
       ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
       null, null, null); 

     JSONArray jarray = new JSONArray(); 
     db.open(); 

     while (phones.moveToNext()) { 
      String name = phones 
        .getString(phones 
          .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      String phoneNumber = phones 
        .getString(phones 
          .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

      db.contact_table(name, phoneNumber); 

      JSONObject json = new JSONObject(); 

      try { 

       json.put("name", name); 
       json.put("phone", phoneNumber); 
       jarray.put(json); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 

     upload(jarray, context); 

     db.close(); 

     Log.i("********", jarray.toString()); IT SHOWS MY ARRAY AND THEN BEFORE UPLOAD IT TO THE SERVER BY POST IT'S NULL... 
     phones.close(); 
    } 

} 

public void upload(Object jobject, Context c) { 

    ArrayList<NameValuePair> nvp = new ArrayList<NameValuePair>(); 
    DBupload upload = new DBupload(); 
    DatosRegistro dr = new DatosRegistro(c); 

    nvp.add(new BasicNameValuePair("content", jobject.toString())); 
    nvp.add(new BasicNameValuePair("token", dr.hash_final(
      dr.token_secret(dr.mail(), "mail"), jobject.toString()))); 
    nvp.add(new BasicNameValuePair("id", String.valueOf(dr 
      .return_id_phone()))); 

    JSONObject json2 = upload.UploaData(nvp, 
      "http://anonyme.mariomontes.es/contacts/insert"); 

    try { 
     if (json2.getInt("error") == 1) { 

     } else { 
      db.contact_table(name, phoneNumber); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

謝謝!

+0

你也可以編輯實際的問題是什麼?代碼看起來不錯:) – yoshi 2012-07-14 17:48:03

回答

0
ArrayList<NameValuePair> nvp = new ArraList<BasicNameValuePair>(); 
BasicNameValuePair tmp = new BasicNameValuePair("something", content); 
nvp.add(tmp); 

你有NameValuePairArrayList。所以你需要把一個NameValuePair對象,在ArrayList

+0

對不起,你能再看看我的代碼,這是我的錯:) – 2012-07-14 17:25:03

+0

它看起來不錯。你的問題是什麼? – Blackbelt 2012-07-14 17:27:24

+0

當我上傳到服務器,內容請求它是空的......也許這是一個尺寸問題? :) – 2012-07-14 17:34:16

0

只有限制將是內存,據我所知。

我有一些巨大的JSONArray實例裏面有更大的對象。

我不確定你的代碼示例與什麼相關。

我通常會做這樣的事情:

JSONArray ja = new JSONArray(); 

//multiples of these 
JSONObject jo = new JSONObject(); 
jo.put("name","Marc"); 
jo.put("phone","1234567890"); 

ja.put(jo); 

UPDATE

好吧,我明白你的意思......現在完全不同的問題。

所以問題更喜歡被人說你是調用此:

nvp.add(new BasicNameValuePair("content", jobject.toString()));

,但你傳遞JSONArray作爲對象......你需要將它轉換回JSONArray

nvp.add(new BasicNameValuePair("content",((JSONArray)jobject).toString()));

更妙的是字符串傳遞到您上傳的功能,而不是作爲一個對象

+0

對不起,你可以再次看看我的代碼,這是我的錯:) – 2012-07-14 17:26:29

+0

仍然不工作...服務器說,請願書是內容=空:( – 2012-07-14 20:33:22

+0

那麼你現在通過字符串傳遞?如果是這樣,設置一個斷點和驗證你的字符串是否包含你認爲它包含的東西 – Merlin 2012-07-14 20:35:09