[英]ResultSet to Json in java servlet
嘗試從數據庫中獲取數據並存儲在JSON對象中,如下所示:
try {
JsonObject jsonResponse = new JsonObject();
JsonArray data = new JsonArray();
JsonArray row = new JsonArray();
PrintWriter out = response.getWriter();
Connection con = OracleDBConnection.getConnection();
String query = "Select * from CUSTOMER_DEMOGRAPHICS";
Statement st = con.createStatement();
ResultSet rSet = st.executeQuery(query);
while (rSet.next())
{
row.add(new JsonPrimitive(rSet.getString("COUNTRY")));
row.add(new JsonPrimitive(rSet.getString("STATE")));
row.add(new JsonPrimitive(rSet.getString("CITY")));
data.add(row);
}
jsonResponse.add("ResponseData", data);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
out.print(jsonResponse);
out.flush();
System.out.println(jsonResponse);
} catch (Exception e) {
e.printStackTrace();
}
}
數據庫中的表結構:
COUNTRY STATE CITY
================================
AUSTRALIA VICTORIA MELBOURNE
AUSTRALIA NEW SOUTH SYDNEY
問題是當我打印json時,它按如下所示為每行打印兩次,而不是一次。
{ "ResponseData":
[["AUSTRALIA","VICTORIA","MELBOURNE","AUSTRALIA ","NEW SOUTH WALES","SYDNEY"],
["AUSTRALIA","VICTORIA","MELBOURNE","AUSTRALIA ","NEW SOUTH WALES","SYDNEY"]] }
您正在創建單行,並將其添加到數組兩次。 線
JsonArray row = new JsonArray();
應該在循環內。 不在外面
我認為您應該將此代碼添加到while()的開頭
row = new JsonArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.