簡體   English   中英

Android Arraylist轉換為JSONObject

[英]Android Arraylist to JSONObject

我試圖從ArrayList獲取值並放入JSONObject 我已經寫了下面的代碼,但是它只會將arraylist中的最后一個值放到jsonobject中

我正在努力實現這一目標。

{"lstContacts":"array_value"},{"lstContacts":"array_value"},{"lstContacts":"array_value"}

這是我的代碼

ArrayList<String> tokens;
JSONObject contactsObj;
..
...
test.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                for (int i = 0; i < tokens.size(); i++) {
                    contactsObj.put("ContactToken", tokens.get(i));
                }

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String jsonStr = contactsObj.toString();
            Log.e("CONTACTS", jsonStr); // adds only last array to json object
        }
    });

嘗試這個:

JSONObject contactsObj = new JSONObject();

JSONArray contactsArray = new JSONArray();

try {
    for (int i = 0; i < tokens.size(); i++) {
        JSONObject contact = new JSONObject();
        contact.put("ContactToken", tokens.get(i));
        contactsArray.put(i, contact);
    }

    contactsObj.put("contacts", contactsArray);
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
String jsonStr = contactsObj.toString();
Log.e("CONTACTS", jsonStr); // adds only last array to json object

結果jsonStr將如下所示:

{  
   "contacts":[  
      {  
         "ContactToken":"someToken"
      },
      {  
         "ContactToken":"someToken"
      },
      {  
         "ContactToken":"someToken"
      },
      {  
         "ContactToken":"someToken"
      }
   ]
}

您要覆蓋該對象,因為u要將JsonObject用於ArrayList ,解決方案是在您的情況下使用JsonArray contactObj

JSONArray contactsObj;

  for (int i = 0; i < tokens.size(); i++) {
                    contactsObj.put(i, tokens.get(i));
                }
JSONObject contactsObj = new JSONObject();
for (int i = 0; i < tokens.size(); i++) {
                contactsObj.put("lstContacts" + String.valueOf(i), tokens.get(i));
}
// done...
contactsObj.put("ContactTokens", new JSONArray(tokens));

可能最接近您要尋找的東西。 您甚至不需要為此循環。

這會給你對象

{
    "ContactTokens":["token1","token2","token3"...]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM