我尝试从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
}
});
答案 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"...]
}