Java 从JDBC获取结果并转换为JsonObject
我试图从我的JDBC中获得结果,并将它们转换为Json对象,但我发现这很难做到。。这就是我所拥有的Java 从JDBC获取结果并转换为JsonObject,java,jdbc,jsonobject,Java,Jdbc,Jsonobject,我试图从我的JDBC中获得结果,并将它们转换为Json对象,但我发现这很难做到。。这就是我所拥有的 Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con=DB.getConnection(); String query = "Select city,state from zips where zip=10012"; ps=con.prepareStatemen
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con=DB.getConnection();
String query = "Select city,state from zips where zip=10012";
ps=con.prepareStatement(query);
String line="";
while(rs.next())
{
line= rs.getArray("city").toString();
}
JSONObject jsonObj = new JSONObject(line);
正如您所看到的,我试图获得while循环的结果,并将其放入字符串变量,然后将其放入JsonObject
这显然不起作用,有人有什么建议吗?我一直在寻找和调整这段代码,但没有任何效果
如果有什么不同,我使用的是Java 1.8 JDK。数据库连接工作正常,我在MySQL中尝试过这个查询,所以代码中显然有一些东西 更新:
当我检查查询的输出时,我得到一个空白页。我之所以想在Json中使用它,是因为它应该是android的restful服务。rs.next()用于循环,以从查询中获取所有结果。下面是我编写的一个子例程,应该可以解决您的问题。至少它对我有用,使用PostgreSQL。注意,它创建了一个JSONObject的JSONArray。因此,如果您将其转换为字符串,您将得到如下内容:[{“城市”:“柏林”,“州”:“柏林”},{“城市”:“图森”,“州”:“亚利桑那”},…]
publicJSONArray table2json(ResultSet rs)引发异常{
JSONArray jsArray=新的JSONArray();
int columns=rs.getMetaData().getColumnCount();
while(rs.next()){
JSONObject obj=新的JSONObject();
对于(int i=1;我试图解释您在while(rs.next())
循环中尝试执行的操作。顺便说一句,您应该使用StringBuilder
。此外,“这显然不起作用”没有明确的问题陈述。试着回答你的问题,描述你的期望和得到的结果。现在就澄清一下,好吧,我将使用stringbuilder,看看我得到了什么。事实上,我可能对stringbuilder有误解。一般的想法是,如果你想在每次迭代中添加大量的小部件,那么你不应该使用resutl+=newContent
但是instanceOfStringBuilder.append(newContent)
。但是如果您希望您的while(re.next())
只执行一次,那么您的方法应该是好的(但是您可能应该将whilte
更改为if
,以使代码更清晰)。您的示例似乎表明array.toString生成字符串中有效JSON的假设,但事实并非如此。请查看类似于JSONArray city=new JSONArray(rs.getArray(“city”);
的内容,尽管我仍然不确定这是您想要的。
public JSONArray table2json(ResultSet rs) throws Exception {
JSONArray jsArray = new JSONArray();
int columns = rs.getMetaData().getColumnCount();
while (rs.next()) {
JSONObject obj = new JSONObject();
for (int i = 1; i <= columns; i++) {
Object tempObject=rs.getObject(i);
obj.put(rs.getMetaData().getColumnLabel(i), tempObject);
}
jsArray.put(obj);
}
return jsArray;