急急急!!!怎样将json数组数据 转成json树结构数据?

现有数据:{success:true,root:[{id:"001",name:"aaa",parent:null},{id:"002",name:"bbb",paren... 现有数据:
{success:true,root:[
{id:"001",name:"aaa",parent:null},
{id:"002",name:"bbb",parent:null},
{id:"003",name:"ccc",parent:"001"},
{id:"004",name:"ddd",parent:"001"},
{id:"005",name:"eee",parent:"002"},
{id:"006",name:"fff",parent:"003"}
]}

怎样将上面的数据转成如下的格式:
{success:true,root:[
{id:"001",name:"aaa",text:"aaa",leaf:false,children:[
{id:"003",name:"ccc",text:"ccc",leaf:false,children:[
{id:"006",name:"fff",text:"fff",leaf:true}
]},
{id:"004",name:"ddd",text:"ddd",leaf:true}
]},
{id:"002",name:"bbb",text:"bbb",leaf:false,children:[
{id:"005",name:"eee",text:"eee",leaf:true}
]}
]}

树结构如下图:
展开
 我来答
yugi111
2014-10-28 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
<html>
<head>
<meta charset="utf-8" />
<title>b.html</title>
<style type="text/css">
</style>
<script type="text/javascript">
var jsonobj =
    {
        success : true,
        root : [
                {
                    id : "001",
                    name : "aaa",
                    parent : null
                },
                {
                    id : "002",
                    name : "bbb",
                    parent : null
                },
                {
                    id : "003",
                    name : "ccc",
                    parent : "001"
                },
                {
                    id : "004",
                    name : "ddd",
                    parent : "001"
                },
                {
                    id : "005",
                    name : "eee",
                    parent : "002"
                },
                {
                    id : "006",
                    name : "fff",
                    parent : "003"
                }
        ]
    };
    
    var convert = function (jsonobj)
    {
    var result = {};
    for ( var p in jsonobj)
    {
    if (p != 'root')
    {
    result[p] = jsonobj[p];
    }
    }
    result.root = [];
    var root = jsonobj.root;
    for ( var i = 0; i < root.length; i++)
    {
    var ri = root[i];
    ri.text = ri.name;
    for ( var j = 0; j < root.length; j++)
    {
     root[j].leaf = true;
    for ( var k = 0; k < root.length; k++)
                {
                if (root[k].parent == root[j].id)
                    {
                 root[j].leaf = false;
                 break;
                    }
                }
    }
    
    if (ri.parent != null && ri.parent != 'null')
    {
    for ( var j = 0; j < root.length; j++)
    {
    var rj = root[j];
    if (rj.id == ri.parent)
    {
    rj.children = !rj.children ? [] : rj.children;
    rj.children.push (ri);
    break;
    }
    }
    }
    
    if (ri.parent == null || ri.parent == 'null')
    {
    result.root.push (ri);
    }
    }
    
    return result;
    }
    
    var result = convert (jsonobj);
    console.log (result);
</script>
</head>
<body>
</body>
</html>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式