JSONArray打印相同的值

时间:2017-03-24 08:39:59

标签: json jsp

JSON对象obj被插入到JSONArray arr中,但是当打印数组时,将打印相同的对象以获得ResultSet的迭代次数。

有人可以告诉我这是什么错误吗?

try { 
    connection = DriverManager.getConnection(connectionUrl+dbName, userId,password);
    statement=connection.createStatement();
    statement2=connection.createStatement();
    String sql1 ="SELECT * FROM patient_detail where nurseid="+uidd;
    resultSet = statement.executeQuery(sql1);
    while(resultSet.next())
    {
        obj.put("fname", resultSet.getString("fname"));
        obj.put("lname", resultSet.getString("lname"));
        obj.put("pid", resultSet.getString("pid"));
        obj.put("gender", resultSet.getString("gender"));
        obj.put("dob", resultSet.getString("dob"));
        obj.put("appdate", resultSet.getString("appdate"));
        obj.put("diseaseid", resultSet.getString("diseaseid"));
        list.add(obj);
    }

    String jsonText1 = JSONValue.toJSONString(list);
    connection.close();
}

2 个答案:

答案 0 :(得分:1)

在循环中,您在每次迭代中改变相同的对象,然后将相同的对象添加到列表中。您在下一次迭代中对该对象进行的任何更改 对您存储在列表中的对象的更改。因此,最后您的列表包含对同一对象的 n 引用。

要解决此问题,请在每次迭代中创建一个新对象:

public class C {
    protected void method(C param) {
        super.method(param);
    }
}

答案 1 :(得分:1)

我猜你的问题可能是对象“obj”。 尝试在每次迭代中创建新的obj

try { 
    connection = DriverManager.getConnection(connectionUrl+dbName, userId,password);
    statement=connection.createStatement();
    statement2=connection.createStatement();
    String sql1 ="SELECT * FROM patient_detail where nurseid="+uidd;
    resultSet = statement.executeQuery(sql1);
    while(resultSet.next())
    {
        obj = new JSONObject(); // <----
        obj.put("fname", resultSet.getString("fname"));
        obj.put("lname", resultSet.getString("lname"));
        obj.put("pid", resultSet.getString("pid"));
        obj.put("gender", resultSet.getString("gender"));
        obj.put("dob", resultSet.getString("dob"));
        obj.put("appdate", resultSet.getString("appdate"));
        obj.put("diseaseid", resultSet.getString("diseaseid"));
        list.add(obj);
    }

    String jsonText1 = JSONValue.toJSONString(list);
    connection.close();
}