循环中的 JSONObject 名称

JSONObject name in a loop

我有一个清单。我想要尽可能多的 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);

}

但这不起作用,我只得到最后一项,我需要不同的 JSONObject 名称。我怎样才能做到这一点?

您可以轻松地将 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);

}

您的问题是您创建了

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);

}

我在下面添加了将数据添加到 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 class :

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;
    }
}

谢谢..!!

感谢您的支持。 我解决了我的问题。问题是我在向数组添加对象时没有添加位置。

我在做

ja.add(jo);

我改成了

ja.add(i,jo);

然后就成功了.. 但是非常感谢在 Hashmaps 上清除我的问题。到目前为止,我一直在哈希图中苦苦挣扎.. 非常感谢。