Java 正确显示将SQL结果集转换为JSON
我正在尝试为web服务实现java方法,该方法应该从表中检索数据并以json格式返回结果。为此,我使用json_agg()函数将查询结果转换为我想要显示的json,但到目前为止它的显示格式是错误的。以下是方法本身:Java 正确显示将SQL结果集转换为JSON,java,json,postgresql,jdbc,resultset,Java,Json,Postgresql,Jdbc,Resultset,我正在尝试为web服务实现java方法,该方法应该从表中检索数据并以json格式返回结果。为此,我使用json_agg()函数将查询结果转换为我想要显示的json,但到目前为止它的显示格式是错误的。以下是方法本身: public String GetRowsFromTable() throws SQLException { Connection connection = null; String result = ""; try { connection
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
实例不是您的实际结果,它是结果的容器。查询返回一列,因此可以通过索引1访问该列的内容(JDBC列索引从1开始,而不是像Java中通常的0)。要将结果集移动到下一行,需要使用next()
通常,您会使用while()
循环来迭代ResultSet
中的所有行,但由于聚合,您的查询将只返回一行,因此不需要这样做。确实要将表的所有行作为一个巨大的JSON文档吗。如果表包含一百万行怎么办
Java JDBC教程对此进行了详细说明:
对象上.toString()
的默认输出,调用结果集
并不正确,只需查看结果集
的源代码,它只执行对象
上的默认值。我认为您需要阅读关于您正在尝试做什么的文档,或者如果您已经做了,请再次阅读。
ResultSet rs = prepStmt.executeQuery();
if (rs.next()) {
System.out.println(rs.getString(1));
}