如何在java中将数据库结果集转换为JSON格式?
我想将db中的结果集转换为json格式,问题是当结果集以多行的形式返回时,同一个id中有一些重复的数据 DB示例:如何在java中将数据库结果集转换为JSON格式?,java,json,api,jdbc,automation,Java,Json,Api,Jdbc,Automation,我想将db中的结果集转换为json格式,问题是当结果集以多行的形式返回时,同一个id中有一些重复的数据 DB示例: =========================================================== USER_ID NAME PHONE_NUMBER CITY =========================================================== 1
===========================================================
USER_ID NAME PHONE_NUMBER CITY
===========================================================
1 JACK 079999999999 New York
1 JACK 078888888888 Las Vegas
我想让我的json正文看起来像:
{ "USER_ID": 1,"NAME": JACK,"PHONE_NUMBER":[ 079999999999, 078888888888 ], "CITY": [ New York, Las Vegas ]}
这是我的代码:
Statement stmt = con.createStatement();
// Execute the SQL Query. Store results in ResultSet
ResultSet rs = stmt.executeQuery(Query);
System.err.println("Executing the query please wait ...");
ResultSetMetaData rsmd=null;
rsmd=(ResultSetMetaData) rs.getMetaData();
int columnsCount=rsmd.getColumnCount();
for (int j = 1; j <= columnsCount; j++) {
System.err.print(rsmd.getColumnName(j) + " || ");
}
JSONArray jsonArray = new JSONArray();
while (rs.next()) {
int total_rows = rs.getMetaData().getColumnCount();
JSONObject obj = new JSONObject();
for (int i = 0; i < total_rows; i++) {
String columnName = rs.getMetaData().getColumnLabel(i + 1).toLowerCase();
Object columnValue = rs.getObject(i + 1);
// if value in DB is null, then we set it to default value
if (columnValue == null){
columnValue = "null";
}
if (obj.has(columnName)){
columnName += "1";
}
obj.put(columnName, columnValue);
}
jsonArray.put(obj);
System.out.print("\n");
System.out.print("\n");
String gsonBody = gson.toJson(jsonArray);
System.err.println(gsonBody);
}
return jsonArray;
语句stmt=con.createStatement();
//执行SQL查询。将结果存储在ResultSet中
ResultSet rs=stmt.executeQuery(查询);
System.err.println(“正在执行查询,请稍候…”);
ResultSetMetaData rsmd=null;
rsmd=(ResultSetMetaData)rs.getMetaData();
int columnsCount=rsmd.getColumnCount();
对于(int j=1;j您使用的是哪种RDBMS?如果Postgres/db2是您的数据库,那么您可以直接将结果集作为JSON返回。您最好的选择是创建一个自定义类,用一些集合字段(如城市和数字)存储该数据,然后用查询填充它。然后使用现有库将其序列化为JSON.I doubt一般来说,你不需要做很多无意义的工作就可以做到。如果你总是想要JSON格式的,你可以看看使用RDBMS,其实我不在乎RDBMS是什么,编写此代码的目的是使用自动化脚本测试web服务。因此,我想以JSON格式返回db结果。并将此JSON对象与预期的JSON进行比较我想您应该尝试使用并实现自己的处理程序,比如公共类JsonResultSetHandler实现ResultSetHandler{private RowProcessor convert=null;公共JsonResultSetHandler(){this(JsonRowProcessor.ROW_PROCESSOR);}公共JsonResultSetHandler(RowProcessor convert){