正确显示将SQL结果集转换为JSON

时间:2016-07-18 23:22:54

标签: java json postgresql jdbc resultset

我正在尝试为Web服务实现java方法,该方法应该从表中检索数据并以json格式返回结果。为此,我使用json_agg()函数将查询结果转换为我想要显示的json,但到目前为止它以错误的格式显示。这是方法本身:

public String GetRowsFromTable() throws SQLException {

    Connection connection = null;
    String result = "";
    try {
        connection = Connection.getConnection();
        PreparedStatement prepStmt = conn.prepareStatement("SELECT json_agg(table1) FROM table");
        ResultSet rs = prepStmt.executeQuery();
        result += rs;
        System.out.println(rs);
    } catch (SQLException sqlex) {
        sqlex.printStackTrace();
    } finally {
        connection.close();
    }

    return result;
}

控制台显示以下结果:

org.postgresql.jdbc.PgResultSet@5179f609

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您需要遍历ResultSet并检索每个ResultSet实例您的实际结果是结果的容器。您的查询返回一列,因此您可以通过索引1访问该内容(JDBC列索引从1开始,而不是像往常一样在Java中)。要将结果集移动到下一行,您需要使用next()

ResultSet rs = prepStmt.executeQuery();
if (rs.next()) {
    System.out.println(rs.getString(1));
}

通常,您将使用while()循环来迭代ResultSet中的所有行,但由于聚合,您的查询将只返回单行,因此不需要。您确定确实希望所有行作为单个巨大的JSON文档。如果表包含一百万行怎么办?

Java JDBC教程中对此进行了解释: