解决方案 »

  1.   

    var arr = ['/sys','/sys/aaa','/sys/bbb','/sys/aaa/ccc','/sys/aaa/ddd','/sys/bbb/ccc','/sys/bbb/ddd','/sys/bbb/ccc/eee'];
    function getLast(str){
    var tempArr = str.split('\/');
    return tempArr[tempArr.length-1];
    }
    var regGetLast = /\/.+\//g;
    var myjson = {
    name:getLast(arr[0]),
    state:'open',
    parent:'null'
    }
    var par = myjson.name;
    function getJson(parentName){
    var tempArr = [];
    for(var i = 0;i<arr.length;i++){
    var reg = new RegExp('^'+parentName+'/[^/]+$','g');
    if(reg.test(arr[i])){
    var tempPar = parentName.replace(regGetLast,'');
    var tempObj = {
    id:'j'+i,
    name:getLast(arr[i]),
    parent:getLast(parentName),
    children:getJson(arr[i])
    };
    if(tempObj.children.length === 0){
    delete tempObj.children;
    arr.splice(i,1);
    }
    tempArr.push(tempObj);
    }
    }
    return tempArr;
    }
    myjson.children = getJson(arr[0]);
    alert(JSON.stringify(myjson));
      

  2.   


    你好,结贴以后才发现输入数据写错了,输入数据只有叶子节点的路径,格式也略有变化,开头少一个‘/’sys/aaa/ccc
    sys/aaa/ddd
    sys/bbb/ddd
    sys/bbb/ccc/eee实际构造的json数据跟之前的是完全一样的。
    还望能够继续指教,谢谢。