我有这段代码
JSONObject output = new JSONObject();
JSONObject elements = new JSONObject();
JSONArray jsonArrayOutput = new JSONArray();
ArrayList<String> name = ArrayList<String>();
for (int i=0 ; i<name.size() ; i++){
elements.put("Name", name.get(i));
jsonArrrayOutput.put(elements);
}
output.put("Results", jsonArrrayOutput).toString();
问题是结果输出Json只有&#34; name&#34;的最后一个元素。 arraylist很多次,不是所有的元素。 我该如何解决?
答案 0 :(得分:0)
您在JSONObject output = new JSONObject();
JSONObject elements = new JSONObject();
JSONArray jsonArrayOutput = new JSONArray();
ArrayList<String> name = ArrayList<String>();
for (int i=0 ; i<name.size() ; i++){
JSONObject temp = new JSONObject();
temp.put("Name", name.get(i));
jsonArrrayOutput.put(temp);
}
output.put("Results", jsonArrrayOutput).toString();
中再次添加相同名称键的元素
尝试为每次迭代创建一个新的JSONObject。
E.g:
dataChanged
答案 1 :(得分:0)
这是我的代码版本。代码的问题是elements
对象的声明。每当您更改elements
时,都会更改您添加到数组中的element
和element
。
这是因为当您将element
对象放入jsonArrayOutput
JSONObject output = new JSONObject();
JSONArray jsonArrayOutput = new JSONArray();
ArrayList<String> name = new ArrayList<>();
for (int i = 0; i < name.size(); i++) {
JSONObject elements = new JSONObject();
try {
elements.put("Name", name.get(i));
jsonArrayOutput.put(elements);
} catch (JSONException e) {
e.printStackTrace();
}
}
try {
output.put("Results", jsonArrayOutput).toString();
Log.i("info",output.toString());
} catch (JSONException e) {
e.printStackTrace();
}
希望有所帮助!