Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON添加到JSONArray问题_Java_Json - Fatal编程技术网

Java JSON添加到JSONArray问题

Java JSON添加到JSONArray问题,java,json,Java,Json,大家好,我不是Json的高手。我试图通过循环将一些json对象添加到json数组中,但问题是每次它进入循环时,新数据都会覆盖数组中以前的数据。这是我的密码: JSONObject jsonObj = new JSONObject(); JSONArray jsonArray = new JSONArray(); if(X.size() > 0) { for (int j = 0; j < X.size(); j++) { zBean aBean = (zBean)X

大家好,我不是Json的高手。我试图通过循环将一些json对象添加到json数组中,但问题是每次它进入循环时,新数据都会覆盖数组中以前的数据。这是我的密码:

JSONObject jsonObj = new JSONObject();
JSONArray jsonArray = new JSONArray();
if(X.size() > 0)
{
  for (int j = 0; j < X.size(); j++)
   {
    zBean aBean = (zBean)X.get(j);
    jsonObj.put(ID,newInteger(aBean.getId()));
    jsonObj.put(NAME,aBean.getName());
    jsonArray.add(jsonObj);
   }
}
我希望我的例子足够清楚


如果有人能在这里帮助我,我将不胜感激。

您需要在循环的每次迭代中创建一个新的
jsonObj
参考:

for (int j = 0; j < X.size(); j++)
 {
  zBean aBean = (zBean)X.get(j);
  jsonObj = new JSONObject();
//^^^^^^^^^^^^^^^^^^^^^^^^^^^ add this line
  jsonObj.put(ID,newInteger(aBean.getId()));
  jsonObj.put(NAME,aBean.getName());
  jsonArray.add(jsonObj);
 }
for(int j=0;j

否则,您将一次又一次地更新同一实例,并将对同一对象的引用多次添加到数组中。因为它们都是相同的引用,所以对其中一个的更改会影响数组中的所有引用。

虽然每次循环运行时我都创建了一个新的JSONObject,但仍然存在相同的问题。因此,我所做的是创建了一个JSONObject的
列表
,每次循环运行时,我都向列表中添加一条新记录,并每次更新该记录。在for循环的最后,我根据列表输入JSONArray

JSONArray jsonArray = new JSONArray();
List<JSONObject> myList = new ArrayList()<>;
if(X.size() > 0)
{
  for (int j = 0; j < X.size(); j++)
  {
    myList.add(new JSONObject());
    zBean aBean = (zBean)X.get(
    myList.get(j).put(ID,newInteger(aBean.getId()));
    myList.get(j).put(NAME,aBean.
  }
  for(int j = 0; j < myList.size(); j++)
    jsonArray.add(myList.get(j));
}
JSONArray-JSONArray=new-JSONArray();
List myList=new ArrayList();
如果(X.size()>0)
{
对于(int j=0;j
以下内容将json obj添加到json数组中

public static void main(String[] args) {
    JSONArray jsonArray = new JSONArray();
    int i = 0;
    while(i < 3)
    {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("Name","Random"+i);
        jsonObj.put("ID", i);
        jsonArray.put(jsonObj); //jsonObj will be pushed into jsonArray
        i++;
    }
    System.out.println("jsonArray : "+ jsonArray);
}
.pom具有以下依赖项

<dependencies>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.6</version>
    </dependency>
</dependencies>

org.json
json
20180813
com.google.code.gson
格森
2.8.6
jsonArray : [{"ID":0,"Name":"Random0"},{"ID":1,"Name":"Random1"},{"ID":2,"Name":"Random2"}]
<dependencies>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.6</version>
    </dependency>
</dependencies>