Android Arraylist到JSONObject

时间:2015-11-02 15:47:06

标签: java android json arraylist

我尝试从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
        }
    });

4 个答案:

答案 0 :(得分:7)

试试这个:

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"
      }
   ]
}

答案 1 :(得分:1)

您正在覆盖该对象,因为您正在使用JsonObject ArrayList,解决方案是在您的情况下使用JsonArray contactObj

JSONArray contactsObj;

  for (int i = 0; i < tokens.size(); i++) {
                    contactsObj.put(i, tokens.get(i));
                }

答案 2 :(得分:0)

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

答案 3 :(得分:0)

contactsObj.put("ContactTokens", new JSONArray(tokens));

可能最接近您正在寻找的东西。你甚至不需要为此循环。

这将为您提供对象

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