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

Proper display converted SQL resultset into JSON

我正在尝试为 Web 服务实施 java 方法,该方法应从 table 检索数据,return 结果为 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

如有任何帮助,我们将不胜感激。

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

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

通常您会使用 while() 循环遍历 ResultSet 中的所有行,但由于聚合,您的查询只会 return 单个行,因此没有必要这样做。您确定 真的 想要 table 的 所有 行作为一个巨大的 JSON 文档。如果 table 包含一百万行怎么办?

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