簡體   English   中英

從ResultSet返回JSONArray或JSONObject

[英]Returning JSONArray or JSONObject from ResultSet

我有以下方法...

我正在嘗試在oracle數據庫中驗證結果。 結果不是我所期望的,但是我似乎無法弄清楚如何在不制作地圖或列表/地圖的情況下正確進行制作。

public static JSONArray verifyDRFromButton(String transactionId) {
    JSONArray jsonArray = new JSONArray();
    try {
        ResultSet resultSet;
        Constants.threadSleep(5000);
        Constants.verifyOracle();
        String databaseConnectionString = String.format("jdbc:oracle:thin:@%s:%s:%s",  "*****", "****", "*****");

        Connection conn = DriverManager.getConnection(databaseConnectionString,"*****","*****");
        Statement stmt = conn.createStatement();
        resultSet = stmt.executeQuery("SELECT * from ****** WHERE ***** = '" + transactionId + "'");
        //Print DB Table
        Constants.threadSleep(500);
        //DBTablePrinter.printResultSet(rs);
        //result = rs.toString();
        while (resultSet.next()) {
            int totalRows = resultSet.getMetaData().getColumnCount();
            for (int i = 0; i < totalRows; i++) {
                JSONObject obj = new JSONObject();    
                obj.put(resultSet.getMetaData().getColumnLabel(i + 1)
                        .toLowerCase(), resultSet.getObject(i + 1));
                jsonArray.put(obj);
            }
        }
        conn.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return jsonArray;
}

結果看起來像這樣...

[
    {"id": "idvalue"}, 
    {"id2": "id2value"}, 
    {"name": "namevalue"}, 
    {"name2": "name2value"}
]

我希望如此。

[
    {"id": "idvalue", "id2": "id2value"}, 
    {"name": "namevalue", "name2": "name2value"}
]

移動這條線

JSONObject obj = new JSONObject()

在for循環和此行之前

jsonArray.put(obj);

循環之后如果您沒有獲得預期的結果,請分享您的結果

首先,從Java EE 7開始,嘗試使用JSON-P( https://javaee.github.io/jsonp/index.html ),這是enterirpise Java中的標准JSON規范。

第二,這個

[
    {"id":, "idvalue"}, 
    {"id2":, "id2value"}, 
    {"name":, "namevalue"}, 
    {"name2":, "name2value"}
] 

不是有效的JsonArray,因為所包含的對象不是有效的JSON。 因此,您的算法一定存在問題。

第三,如果您使用基於接口的JSON-P,則可以基於ResultSet添加JsonArray的實現:這意味着您至少可以隱藏該程序混亂,即使不進行重構也可以使其更加優雅。

這個想法是使ResultSet 充當 JsonArray,而不是將其轉換為JsonArray。 有關此主題的更多信息,請訪問: https//www.amihaiemil.com/2017/10/16/javaee8-jsoncollectors-oop-alternative.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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