json转树状结构

Posted 123困兽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json转树状结构相关的知识,希望对你有一定的参考价值。

原数据格式

var jsonData = eval(\'[{"id":"4","pid":"1","name":"大家电"},  {"id":"5","pid":"1","name":"生活电器"},  {"id":"1","pid":"0","name":"家用电器"},  {"id":"2","pid":"0","name":"服饰"},  {"id":"3","pid":"0","name":"化妆"},  {"id":"7","pid":"4","name":"空调"}, {"id":"8","pid":"4","name":"冰箱"},  {"id":"9","pid":"4","name":"洗衣机"},  {"id":"10","pid":"4","name":"热水器"},  {"id":"11","pid":"3","name":"面部护理"},  {"id":"12","pid":"3","name":"口腔护理"},  {"id":"13","pid":"2","name":"男装"},  {"id":"14","pid":"2","name":"女装"},  {"id":"15","pid":"7","name":"海尔空调"},  {"id":"16","pid":"7","name":"美的空调"}, {"id":"19","pid":"5","name":"加湿器"},  {"id":"20","pid":"5","name":"电熨斗"}   ]\');

定义js方法:

function transData(a, idStr, pidStr, chindrenStr){    
                var r = [], hash = {}, id = idStr, pid = pidStr, children = chindrenStr, i = 0, j = 0, len = a.length;    
                for(; i < len; i++){    
                    hash[a[i][id]] = a[i];    
                }    
                for(; j < len; j++){    
                    var aVal = a[j], hashVP = hash[aVal[pid]];    
                    if(hashVP){    
                        !hashVP[children] && (hashVP[children] = []);    
                        hashVP[children].push(aVal);    
                    }else{    
                        r.push(aVal);    
                    }    
                }    
                return r;    
            }  

调用js方法及转换的数据格式

var jsonDataTree = transData(jsonData, \'id\', \'pid\', \'chindren\');

以上是关于json转树状结构的主要内容,如果未能解决你的问题,请参考以下文章

05 - json转成树状结构

实用代码片段将json数据绑定到html元素 (转)

将扁平的分层数据转换为树状结构的 JSON

树状结构的json

它';这是一个简单直接的组织结构图插件。任何时候你想要一个树状图表,你都可以转到组织结构图。

从大型 JSON 文件创建树状结构的最有效方法