从ResultSet写入JSON时重复上一个值

时间:2015-08-04 08:16:14

标签: java json

我经常搜索但无法得到满意的解决方案。

我的目标是使用JSON中的JSONObjectJSONArrayResultSet。循环后,当我在控制台中打印结果时,它会重复ResultSet的最后一个值。我的代码片段如下:

JSONObject objMain = new JSONObject();
JSONObject obj1 = new JSONObject();
JSONArray arrMain = new JSONArray();

preparedStatement = con.prepareStatement("SELECT Id, Role, Admin_User_Role_ID FROM ADMIN_ROLES");
ResultSet rs = preparedStatement.executeQuery();

if (rs != null) {
    while (rs.next()) {
        obj1.put("Id", rs.getInt("Id"));
        obj1.put("Role", rs.getString("Role"));
        arrMain.add(obj1);
        objMain.put(null,arrMain);
    }
}

System.out.println("JSON: " + objMain);

获得以下不正确的结果:

JSON: {"null":[{"Role":"Bulk Peripheral Provisioning Admin","Id":29},{"Role":"Bulk Peripheral Provisioning Admin","Id":29},{"Role":"Bulk Peripheral Provisioning Admin","Id":29}]}

有人可以指导我做错了什么! 注意:请不要建议任何内置方法

1 个答案:

答案 0 :(得分:0)

我得到的解决方案问题是obj1的初始化,方法是在while (rs.next()) {...}重置删除后放置以下语句!

obj1    = new JSONObject();