Java JSONArray被写下来了

Java JSONArray被写下来了,java,json,jqgrid,Java,Json,Jqgrid,我用 我正在尝试为jqgrid创建JSON对象。数据被添加但正确,但第二条记录被覆盖 ArrayList resList = connect.statement_query(sql, para); jsonObject = new JSONObject(); jsonObject.put("total", resList.size()/para.length); jsonObject.put("page", 1);

我用

我正在尝试为jqgrid创建JSON对象。数据被添加但正确,但第二条记录被覆盖

 ArrayList resList = connect.statement_query(sql, para);

            jsonObject = new JSONObject();

            jsonObject.put("total", resList.size()/para.length);
            jsonObject.put("page", 1);
            jsonObject.put("records", resList.size()/para.length);

            JSONArray cellArray = new JSONArray();
            JSONArray cell = new JSONArray();
            JSONObject cellObj = new JSONObject();

            for (int i = 0; i < resList.size(); i += para.length) {
                cellObj.put("id", resList.get(i));

                JSONArray temp=new JSONArray();
                temp.add(resList.get(i));
                temp.add(resList.get(i + 1));
                temp.add(resList.get(i + 2));
                temp.add(resList.get(i + 3));
                temp.add(resList.get(i + 4));

                cell=temp;
                cellObj.put("cell", cell);
                System.out.println("Cell Obj: "+cellObj.toJSONString());
                cellArray.add(cellObj);
                System.out.println("Cell Array: "+cellArray.toJSONString());
                //cellObj.clear();
                temp.clear();
            }
            System.out.println("Cell Array-Out: "+cellArray);
            jsonObject.put("rows", cellArray);
为什么单元格数组在第二条记录上被覆盖,为什么它在循环外变为空白?如何克服它?
1用于对象被重写-

您需要在for循环中重新初始化cellObj

对于int i=0;i 2对于空白单元格-

您正在通过“temp.clear;”单元对象引用temp来清除temp,并且temp被清除,这就是您获得空白数据的原因


您可以删除临时清除代码。

这会使情况变得更糟。单元格Obj:{id:1000,单元格:[1000,BE6K,vshekhar,2014-06-02,N\/A]}单元格数组:[{id:1000,单元格:[1000,BE6K,vshekhar,2014-06-02,N\/A]}单元格Obj:{id:1001,单元格:[1001,BOA,maahamad,2013-05-01,N\/A]}单元格数组:[{id:1000,单元格:[1001,单元格:[maahamad,2013-05-01,2013]单元数组输出:[{id:1000,单元:[]},{id:1001,单元:[]}]尝试过。如果我不清除它。它仍然会被覆盖。谢谢你的帮助。问题似乎出在JAR上。更新了版本,它工作正常。temp.clear现在可以工作了。谢谢。你两个都试过了吗?重新初始化cellObj,但不清除temp?因为我尝试了相同的代码,它工作正常。请重新检查。
Cell Obj: {"id":"1000","cell":["1000","BE6K","vshekhar","2014-06-02","N\/A"]}
Cell Array: [{"id":"1000","cell":["1000","BE6K","vshekhar","2014-06-02","N\/A"]}]
Cell Obj: {"id":"1001","cell":["1001","BOA","maahamad","2013-05-01","N\/A"]}
Cell Array: [{"id":"1001","cell":["1001","BOA","maahamad","2013-05-01","N\/A"]},{"id":"1001","cell":["1001","BOA","maahamad","2013-05-01","N\/A"]}]
Cell Array-Out: [{"id":"1001","cell":[]},{"id":"1001","cell":[]}]