2014-07-15 14 views
2

에 SQL 쿼리를 변환하는 방법 :내가 같은 쿼리의 결과를 변환 할 필요가 어떻게 JSON 배열

SELECT * FROM table WHERE column1=X 

을 JSONArray에 자바. INT PRIMARY KEY AUTO_INCREMENT

  • 문자열
  • 문자열
  • 문자열
  • 문자열
  • 문자열
  • INT
  • 타임 스탬프 CURRENT_TIMESTAMP : 내 테이블에서 나는 다음과 같은 열이

    1. ID가

    내가 필요로하지 않는 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; 
    } 
    

    티켓은 내 맞춤 클래스입니다.

    //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;   
    } 
    

    내가 응답을 사용할 필요가 : 는 그리고는 "인쇄"내 JSON 객체의 코드입니다. 인쇄 할 새 기능을 정의 할 수 있습니다. 누군가 나를 도울 수 있습니까? 고맙습니다.

  • +0

    질문이 있으십니까? –

    +0

    몇 가지 코드를 추가했습니다. – user3809345

    +0

    어떤 DBMS를 사용하고 있습니까? Postgres는 데이터를 JSON으로 변환하는 다양한 함수입니다. –

    답변

    0

    이미 코드의 결과를 검색 할 수 있다고 가정 할 때 코드는 너무 많이 작성해야합니다. Json-lib은 사용하기 쉽습니다. JSON 객체를 만들고 채우거나 Java 객체 (사용자 정의 또는 컬렉션 및 맵)로 /에서 변환하는 것이 간단합니다.

    링크 된 사이트에는 많은 안내가 있습니다.

    업데이트 된 질문에 비추어 (처음에는 콩이 있다고 말하지 않았다) Jackson을 사용하는 것이 좋습니다. This example은 Jackson을 사용하여 파일과 문자열에 콩을 출력하는 방법을 보여줍니다.

    쿼리 결과를 JSON으로 변환하는 것에 대한 귀하의 초기 질문에 답변 해 주셨습니다. 다른 주제 (예 : 응답)에 대한 답변을 보려면 새 StackOverflow 질문을해야합니다.

    +0

    위의 코드 확인 – user3809345