2017-05-23 38 views
0

數據我想問一下如何製作像下面的願望JSON輸出:簡單的Java的JSON獲取從數據庫和顯示

{ 
"Result":"OK", 
"Records":[ 
    {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"}, 
    {"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"}, 
    {"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"}, 
    {"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"} 
] 
} 

我的JSP代碼是什麼樣子如下:

<%@page language="java" import="java.sql.*"%> 
<%@page import="java.util.*" %> 
<%@page contentType="text/html; charset=UTF-8"%> 
<%@page import="org.json.simple.JSONArray"%> 
<%@page import="org.json.simple.JSONObject"%> 
<%@page import="org.json.simple.parser.JSONParser"%> 
<%@page import="org.json.simple.parser.ParseException"%> 
<% 
    String dept = (String)request.getParameter("dept"); 
    String sql = "SELECT * FROM employees WHERE department='"+dept+"'"; 

    try 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn=null; 
     conn=DriverManager.getConnection("jdbc:mysql://localhost/jspjsons","root","123456"); 
     ResultSet rs=null; 
     Statement stm1=conn.createStatement(); 

     JSONArray list = new JSONArray(); 
     rs=stm1.executeQuery(sql); 
     while(rs.next()) 
     { 
      JSONObject obj=new JSONObject(); 
      obj.put("PersonId", rs.getString("id")); 
      obj.put("Name", rs.getString("name")); 
      obj.put("Age", rs.getString("age")); 
      obj.put("RecordDate", rs.getString("date")); 

      list.add(obj); 
     } 

     out.print(list); 
    } 
    catch(Exception ex) 
    { 
     out.println("<h1>"+ex+"</g1>"); 
    } 
%> 

還顯示輸出總是像這樣的前後支架[],我如何擺脫它?需要它來開始和{}到底要不要[]

+0

您的代碼意味着您需要對象數組,因爲它必須以[]開頭。 –

+0

如何以{}開始和結束?像上面想要的輸出 – Teddybugs

+1

然後你不需要JSONArray list = new JSONArray();直接相反,您需要JSONObject,您可以定義JSONArray屬性並將其填充。 –

回答

3

您正確創建Records陣列(您已存儲在list變量),所有你需要做的就是添加一個新的JSONObject與沿Result

請注意,{ ... }表示JSONObject,而[ ... ]表示JSONArray

while(rs.next()) 
{ 
    JSONObject obj=new JSONObject(); 
    obj.put("PersonId", rs.getString("id")); 
    obj.put("Name", rs.getString("name")); 
    obj.put("Age", rs.getString("age")); 
    obj.put("RecordDate", rs.getString("date")); 

    list.add(obj); 
} 

//Include this code beneath to create the JSON you require (mainObject). 
JSONObject mainObject = new JSONObject(); 
mainObject.put("Result", "OK"); 
mainObject.put("Records", list); 
+0

你的意思是使用JSONObject而不是像JSONArray out.print(mainObject);正確? – Teddybugs

+1

是的,'mainObject'應該看起來像您在問題頂部包含的所需JSON。 – dat3450

+1

非常感謝。這有助於很多。 – Teddybugs

相關問題