java - java中如何将数据库结果集转换为JSON格式?

标签 java json api jdbc automation

我想将数据库中的结果集转换为 json 格式,问题是当结果集返回为具有相同 ID 的多行且包含一些重复数据时。

数据库示例:

===========================================================
USER_ID         NAME          PHONE_NUMBER         CITY
===========================================================
1               JACK          079999999999        New York
1               JACK          078888888888        Las Vegas

我想让我的 json 主体看起来像:

{ "USER_ID": 1,"NAME": JACK,"PHONE_NUMBER":[ 079999999999, 078888888888 ], "CITY": [ New York, Las Vegas ]}

这是我的代码:

                Statement stmt = con.createStatement();
                // Execute the SQL Query. Store results in ResultSet
                ResultSet rs = stmt.executeQuery(Query);
                System.err.println("Executing the query please wait ...");
                ResultSetMetaData rsmd=null;
                rsmd=(ResultSetMetaData) rs.getMetaData();
                int columnsCount=rsmd.getColumnCount();


                for (int j = 1; j <= columnsCount; j++) {
                    System.err.print(rsmd.getColumnName(j) + " || ");
                }


            JSONArray jsonArray = new JSONArray();
            while (rs.next()) {
                int total_rows = rs.getMetaData().getColumnCount();
                JSONObject obj = new JSONObject();

                for (int i = 0; i < total_rows; i++) {
                    String columnName = rs.getMetaData().getColumnLabel(i + 1).toLowerCase();
                    Object columnValue = rs.getObject(i + 1);

                    // if value in DB is null, then we set it to default value
                    if (columnValue == null){
                        columnValue = "null";
                    }

                    if (obj.has(columnName)){
                        columnName += "1";
                    }
                    obj.put(columnName, columnValue);

                }
                jsonArray.put(obj);

                System.out.print("\n");
                System.out.print("\n");

                String gsonBody = gson.toJson(jsonArray);

                System.err.println(gsonBody);
            }
            return jsonArray;

我怎样才能使这个具有不同结果集的所有可能场景通用。

最佳答案

您使用的是哪种 RDBMS?如果 Postgres/db2 是您的数据库,那么您可以直接将结果集作为 JSON 返回。

关于java - java中如何将数据库结果集转换为JSON格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34856229/

相关文章:

android - 如何在android中解析这个JSON数组

java - 使用 JSONObject 打印键值未​​按预期工作

javascript - 嵌入式 iframe 元素无法与 youtube iframe api 一起使用

api - 如何使用 Sinatra + rspec 测试我的 JSON API

reactjs - 为什么 getDerivedStateFromProps() 被设计为静态

java - JVM INSTR monitorenter 和 JVM INSTR monitorexit

java - 从自定义渲染器获取方法 getTreeCellRendererComponent 内的 JTree 节点文本

json - Swift 获取带参数的 URL

java - 从java中的https-URL读取

java - 如何配置NetBeans 11.1项目以在Raspberry Pi上远程运行