循环中的JSONObject名称

时间:2015-10-08 07:02:50

标签: java android arrays json android-json

我有一份清单。我想要尽可能多的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名称。我怎样才能做到这一点?

4 个答案:

答案 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上清除我。到目前为止,我一直在使用哈希映射 非常感谢。