我需要转换这样的查询结果:
SELECT * FROM table WHERE column1=X
到java中的JSONArray。 在我的表中,我有以下列
我需要保持相同的结构,除了我不需要的id字段。
public static ArrayList<Ticket> lookForATicket(String fermataDiscesa) throws Exception {
Connection dbConn = null;
ArrayList<Ticket> list = null;
try {
try {
dbConn = DBConnection.createConnection();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Statement stmt = dbConn.createStatement();
String query = "SELECT * FROM offer WHERE fermataDiscesa = '" + fermataDiscesa
+ "'";
//test
System.out.println(query);
ResultSet rs = stmt.executeQuery(query);
list = new ArrayList<Ticket>();
Ticket tickets = null;
while (rs.next()) {
//per test
System.out.println(rs.getString(1) + rs.getString(2) + rs.getString(3) + rs.getString(4) + rs.getString(5) + rs.getString(6) + rs.getInt(7));
tickets = new Ticket();
//setto i campi
tickets.setIdGooglePlus(rs.getString("IDGOOGLEPLUS"));
tickets.setIdFacebook(rs.getString("IDFACEBOOK"));
tickets.setFermataSalita(rs.getString("FERMATASALITA"));
tickets.setFermataDiscesa(rs.getString("FERMATADISCESA"));
tickets.setBus(rs.getString("BUS"));
tickets.setTempoRimasto(rs.getInt("TEMPORIMASTO"));
tickets.setTimeStamp(rs.getTimestamp("TIMESTAMP"));
//aggiungo alla lista
list.add(tickets);
}
} catch (SQLException sqle) {
throw sqle;
} catch (Exception e) {
// TODO Auto-generated catch block
if (dbConn != null) {
dbConn.close();
}
throw e;
} finally {
if (dbConn != null) {
dbConn.close();
}
}
return list;
}
Ticket是我的自定义类。 这就是&#34;打印&#34;的代码。我的JSON对象:
//Path: http://localhost:8080/RESTscambio/search
@Path("/search")
public class Search {
// HTTP Get Method
@GET
// Path: http://localhost:8080/RESTscambio/search/dosearch
@Path("/dosearch")
// Produces JSON as response
@Produces(MediaType.APPLICATION_JSON)
public String doSearch(@QueryParam("fermataDiscesa") String fermataDiscesa) throws Exception{
System.out.println("Cerco biglietti..");
ArrayList<Ticket> list = null;
String response = null;
list = DBConnection.lookForATicket(fermataDiscesa);
JSONArray jArray = new JSONArray(list);
if(list != null){
//System.out.println(jObj.put("list_of_ticket", list).toString());
//jObj.put("list_of_ticket", list);
response = Utility.constructJSON("Biglietti disponibili", true);
}else{
response = Utility.constructJSON("Nessun biglietto disponibile", false);
}
return response;
}
我需要使用回复。我可以定义一个新的打印功能。有人能帮我吗? 谢谢
答案 0 :(得分:1)
假设您已经能够检索查询结果,那么您将不得不编写一些代码而不是太多代码。我发现Json-lib易于使用 - 创建和填充JSON对象或转换为Java对象(自定义或集合和映射)非常简单。
链接网站上有很多例子可以指导您。
根据你的更新问题(你最初没有说你有豆)我建议使用杰克逊。 This example显示了如何使用Jackson将bean输出到文件和String。
我已回答了有关将查询输出转换为JSON的初始问题。有关其他主题(如响应)的问题的答案,您需要提出一个新的StackOverflow问题。