簡體   English   中英

在Java Servlet中將ResultSet設置為Json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM