我有一份清单。我想要尽可能多的JSONObjects。列表中的项目。因为我必须在JSONArray中添加所有这些,所以我想为所有这些添加一个不同的名称。 我正在使用的方法
JSONArray ja;
for(int i=0,i<myList.size();i++){
JSONObject jo=new JSONObject();
jo.put("data",myList.get(i));
ja.add(jo);
}
但这不起作用,我只得到最后一项,我需要不同的JSONObjects名称。我怎样才能做到这一点?
答案 0 :(得分:0)
您可以轻松地将HashMap
转换为JSONObject
。
JSONArray jsonArray=new JSONArray();
Map<String, String> params = new HashMap<>();
params.put("email", "your_email");
params.put("name", "your_name");
JSONObject jobj=new JSONObject(params)
jsonArray.put(jobj);
或尝试
JSONArray ja;
for(int i=0,i<myList.size();i++){
JSONObject jo=new JSONObject();
jo.put(String.valueOf(i),myList.get(i));
ja.add(jo);
}
答案 1 :(得分:0)
您的问题是您创建了
JSONObject jo=new JSONObject();
在 for 循环中。这就是为什么你只有最后一个值的原因。
将您的代码更改为:
JSONArray ja;
JSONObject jo=new JSONObject();
for(int i=0,i<myList.size();i++){
jo.put(String.valueOf(i),myList.get(i));
ja.add(jo);
}
答案 2 :(得分:0)
下面我添加了将数据添加到json数组并检索它的方法..
public void addJSONArray() {
try {
String KEY_A = "a";
String KEY_B = "b";
ArrayList<TempVO> tempVOs = new ArrayList<>();
// adding data to list
for (int i = 0; i < 10; i++) {
TempVO tempVO = new TempVO();
tempVO.setA(i);
tempVO.setB(i);
tempVOs.add(tempVO);
}
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < tempVOs.size(); i++) {
JSONObject jsonObject = new JSONObject();
TempVO tempVO = tempVOs.get(i);
jsonObject.put(KEY_A, tempVO.getA());
jsonObject.put(KEY_B, tempVO.getB());
jsonArray.put(i, jsonObject);
}
// retrieving json data
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
如何调用此方法:
addJSONArray();
方法中使用的VO:
TempVO课程:
public class TempVO {
private int a;
private int b;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
谢谢.. !!
答案 3 :(得分:0)
感谢您的支持。 我解决了我的问题。问题是我在向数组添加对象时没有添加位置。
我在做
ja.add(jo);
我把它改成了
ja.add(i,jo);
然后它工作.. 但是非常感谢你在Hashmaps上清除我。到目前为止,我一直在使用哈希映射 非常感谢。