javascript把本地sql数据库表转换为对象

在做项目的时候,需要读取本地数据库,并且在页面上显示出来,

原始数据

读取出来的原始数据如下:

var r=sqliteDB.exec(document.getElementById('txtSQL').value);
console.info(r);

 

 使用系统的转换方式

console.log('Here is a row: ' + JSON.stringify(r));

 

 可以看到其实数据就是拍平了的字符串

自定义转换对象

自己日常使用对象的形式比较习惯,整理就自己拼接对象,代码如下:

    utilsLib={
        
        // 方法传入两个数组,第一个数组为key,第二个数组对应位置为value,此方法在Python中为zip()函数。
         ArraytoObj : (keys = [], values = []) => {
            if (keys.length === 0 || values.length === 0) return {};
            const len = keys.length > values.length ? values.length : keys.length;
            const obj = {};
            for (let i = 0; i < len; ++i) {
                obj[keys[i]] = values[i]
            }
            return obj;
        },

        // 转驼峰表示:func.camel('USER_ROLE',true) => UserRole
        // 转驼峰表示:func.camel('USER_ROLE',false) => userRole
         camel : (str, firstUpper = false) => {
            let ret = str.toLowerCase();
            ret = ret.replace(/_([\w+])/g, function (all, letter) {
                return letter.toUpperCase();
            });
            if (firstUpper) {
                ret = ret.replace(/\b(\w)(\w*)/g, function ($0, $1, $2) {
                    return $1.toUpperCase() + $2;
                });
            }
            return ret;
        },
        
        // 把数组里面的所有转化为驼峰命名
         camelArr : (arrs = []) => {
            let _arrs = [];
            arrs.map(function (item) {
                _arrs.push(utilsLib.camel(item));
            });
            return _arrs;
        },
        
        // 把数据库对象转换成实体对象(json格式的对象)
        // 1.把columns列名转化为驼峰;
        // 2.把columns和values进行组合成键值对;
         dbToObj : (_dbData = {}) => {
            let _res = [];
            _dbData.map(function (item) {
                let _columns = utilsLib.camelArr(item.columns);
                item.values.map(function (values) {
                    _res.push(utilsLib.ArraytoObj(_columns, values));
                });
            });
            return _res;
        }
    }
    

 

// 解析转换数据
let obj = utilsLib.dbToObj(r);
console.info(obj);

结果如下:

 

 可以看到已经转换为json格式的对象了。

 

总结

来一个完整的代码吧

var r=sqliteDB.exec(document.getElementById('txtSQL').value);
console.info(r);
console.log('Here is a row: ' + JSON.stringify(r));
// 解析数据
let obj = utilsLib.dbToObj(r);
console.info(obj);

执行结果如下:

 

posted on 2023-04-07 16:41  jack_Meng  阅读(173)  评论(0编辑  收藏  举报

导航