java中怎么吧jdbc查询的resultset对象转为json
怪我咯
怪我咯 2017-04-17 10:59:06
[Java讨论组]

java 新手
不知道怎么将查询结果转为json对象
使用的是json-simple 库

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
大家讲道理

一条记录 建议先封装成map 对象 多条几率 封装成 list<map<string,object>>

protected List<Map<String, Object>> fullToList(ResultSet rs) {
    ArrayList result = new ArrayList();
    try {
        int iColumn = rs.getMetaData().getColumnCount();
        while (rs.next()) {
            Map<String, Object> map = new LinkedHashMap<String, Object>();
            for (int i = 1; i <= iColumn; i++) {
                String tmpkey = rs.getMetaData().getColumnName(i);// 通过索引找到行的名字

                String[] tmps = tmpkey.split("_");// 分割所有含"_"字符,返回数组
                String key = "";
                for (int j = 0; j < tmps.length; j++) {
                    if (j == 0) {
                        key += tmps[j].toLowerCase();// 转换为小写
                    } else {
                        key += tmps[j].substring(0, 1).toUpperCase()
                                + tmps[j].substring(1).toLowerCase();
                    }
                }

                Object val = null;
                // switch行类型
                switch (rs.getMetaData().getColumnType(i)) {
                case Types.DATE:
                    val = rs.getDate(i);
                    break;
                case Types.DOUBLE:
                    if(rs.getObject(i)==null)
                        val=null;
                    else
                        val = rs.getDouble(i);
                    break;
                case Types.NUMERIC:
                    if(rs.getObject(i)==null)
                        val=null;
                    else
                        val = rs.getDouble(i);
                    break;
                case Types.DECIMAL:
                    if(rs.getObject(i)==null)
                        val=null;
                    else
                        val = rs.getDouble(i);
                    break;
                case Types.INTEGER:
                    if(rs.getObject(i)==null)
                        val=null;
                    else
                        val = rs.getInt(i);
                    break;
                default:
                    val = rs.getString(i);
                    break;
                }

                if (null != val) {
                    // map找找不到指定键便设置个
                    if (!map.containsKey(key)) {
                        map.put(key, val);
                    }
                }
            }
            result.add(map);
        }
    } catch (Exception e) {
        log.error(e.getMessage());
    } finally {
        try {
            if (rs != null)
                rs.close();
            rs = null;
        } catch (SQLException e) {
            log.error(e.getMessage());
        }
    }
    return result;
}

protected Map<String, Object> fullToMap(ResultSet rs) {
    Map<String, Object> map = new TreeMap<String, Object>();
    try {
        int iColumn = rs.getMetaData().getColumnCount();
        while (rs.next()) {
            for (int i = 1; i <= iColumn; i++) {
                String tmpkey = rs.getMetaData().getColumnName(i);

                String[] tmps = tmpkey.split("_");
                String key = "";
                for (int j = 0; j < tmps.length; j++) {
                    if (j == 0) {
                        key += tmps[j].toLowerCase();
                    } else {
                        key += tmps[j].substring(0, 1).toUpperCase()
                                + tmps[j].substring(1).toLowerCase();
                    }
                }

                Object val = null;
                switch (rs.getMetaData().getColumnType(i)) {
                case Types.DATE:
                    val = rs.getDate(i);
                    break;
                default:
                    val = rs.getString(i);
                    break;
                }

                if (null != val) {
                    if (!map.containsKey(key)) {
                        map.put(key, val);
                    }
                }
            }
            break;
        }
    } catch (Exception e) {
        log.error(e.getMessage());
    } finally {
        try {
            if (rs != null)
                rs.close();
            rs = null;
        } catch (SQLException e) {
            log.error(e.getMessage());
        }
    }
    return map;
}

然后再将map 装成json

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号