将json对象, 字符串, json列表转成可用的列表

本文介绍了一种使用JavaScript处理数据的方法,包括如何将字典数据转换为列表形式,如何从JSON数据中提取列表数据,并实现将列表数据转换为树形结构的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function GetArr(res, p) {
    var d = eval('(' + res.Data + ')');
    return GetDicData(d, res.Type == 1, p);
}
//将字典数据转为列表 d 数据字典对象, l 是否是录入的列表数据, 否为 url访问数据
function GetDicData(d, l, p) {
    var data = new Array();
    if (l) {
        data = d;//如果是编辑数据 直接返回
    } else {
        var u = d.Url + (p ? p : "");
        //如果是访问数据 取返回结果
        $.ajax({
            type: 'get',
            url: u,
            async: false,
            dataType: 'json',
            success: function (res) {
                var arr = new GetDataArr(res, d);//处理返回结果数据, 转为列表数据 
                data = arr;
            },
            error: function (Result, status, e) {
                console.log(Result);
            }
        });
    }
    return data; //返回列表
}
//从获取到的json数据中取出列表数据 res=url源返回数据, d数据字典配置数据, tree bool 是否根据树形格式处理
function GetDataArr(res, data) {
    var Result = new Object();
    //有些路径返回类型为字符串, 将可能出现的字符串转为json对象
    if (res.constructor == String)
        Result = eval('(' + res + ')');
    else
        Result = res;
    //console.log(Result);


    var items = new Array();
    //针对某些路径返回的对象属性, 所需列表为返回对象的一个属性时的处理方式
    if (Result.constructor == Array)
        items = Result;
    else {
        Result.Data;
        for (var p in Result) {
            if (Result[p].constructor == Array)
                items = Result[p];
        }
    }
    //将获取到的列表根据字典配置规则 属性名变更为字典标准属性名
    var arr = new Array();
    for (var i = 0; i < items.length; i++) {
        var item = items[i];
        var obj = new Object();
        if (data.ParentID) {
            obj.ID = item[data.ID];
            obj.ParentID = item[data.ParentID];
            obj.Level = item[data.Level];
            obj.Text = item[data.Text];
            obj.Value = item[data.Value];
        } else {
            obj.Text = item[data.Text];
            obj.Value = item[data.Value];
        }
        arr.push(obj);
    }
    return arr;
}


//list 转成树形json
function listToTree(list, pid) {
    var ret = [];//一个存放结果的临时数组
    for (var i in list) {
        if (list[i].ParentID == pid) {//如果当前项的父id等于要查找的父id,进行递归
            list[i].children = listToTree(list, list[i].ID);
            ret.push(list[i]);//把当前项保存到临时数组中
        }
    }
    return ret;//递归结束后返回结果
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值