JSON生成树
<!DOCTYPE html>
<html>
<head>
<title>厕所部门tree</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script>
function myObj(data) {
var arr = data.split(/\n+/);
for (var i = 0, len = arr.length; i < len; i++) {
if (!arr[i]) continue;
var a = arr[i].split(',');
var pointer = this;
for (var j = a.length - 1; j >= 0; j--) {
var pair = a[j].split('=');
switch(pair[0]){
case 'OU':
pointer[pair[1]] = pointer[pair[1]] || {};
pointer = pointer[pair[1]];
break;
case 'DC':
break;
case 'CN':
if (!pointer['members']) {
pointer['members'] = [pair[1]];
} else {
pointer['members'].push(pair[1]);
}
break;
default:
break;
}
}
}
}
function createTree(json){
function travel(obj){ //遍历传入的obj
html = html || [], stack = stack || [];
html.push('<ul>');
stack.push('</ul>');
for (var key in obj) {
html.push('<li>');
stack.push('</li>');
var t = Object.prototype.toString.call(obj[key]);
if (t == '[object Object]') {
html.push(key);
arguments.callee(obj[key]);
} else if(t == '[object Array]'){
html.push(obj[key].join('</li><li>'));
}
html.push(stack.pop());
}
html.push(stack.pop());
}
var html = [], stack = [];
travel(json);
return html.join('');
}
function $(id){
return document.getElementById(id);
}
function btnCreateTree_click(){
var data = $('data').value, json = new myObj(data), html = createTree(json);
$('tree').innerHTML = html;
$('innerHTML').innerHTML = html.replace(/>/g, '>').replace(/</g, '<');
}
window.onload = function(){
$('data').value = '\
CN=李三江,OU=数据管理部,OU=西瓜果业销售部\n\
\n\
CN=李四江,OU=数据管理部,OU=西瓜果业销售部\n\
\n\
CN=李五江,OU=数据管理部,OU=西瓜果业销售部\n\
\n\
CN=李⑥江,OU=数据管理部,OU=西瓜果业销售部\n\
\n\
CN=李⑦江,OU=数据管理部,OU=西瓜果业销售部\n\
\n\
CN=蒋黄河,OU=数据管理部,OU=葡萄果业销售部\n\
\n\
CN=李刚,OU=数据管理部,OU=葡萄果业销售部\n\
\n\
CN=李双江,OU=数据管理部,OU=葡萄果业销售部\n\
\n\
CN=李H志,OU=数据管理部,OU=葡萄果业销售部\n\
\n\
CN=Jiang,OU=坑爹管理部,OU=葡萄果业销售部\n\
\n\
CN=毛,OU=数据管理部,OU=葡萄果业销售部\n\
\n\
CN=李牛人,OU=扫厕所部,OU=传销部\n\
';
$('btnCreateTree').onclick = btnCreateTree_click;
btnCreateTree_click();
}
</script>
<style>
#tree { width:48%; float:left; }
#html { width:48%; float:left; }
</style>
</head>
<body>
<div id="dataWrap">
DATA:<br />
<textarea id="data" rows="10" cols="50"></textarea>
</div>
<input type="button" id="btnCreateTree" value="Create Tree↓">
<div>
<div id="tree"></div>
<div id="html" style="width:30%">
innerHTML:<br />
<div id="innerHTML"></div>
</div>
</div>
</body>
</html>
作者:阿良
出处:http://www.cnblogs.com/arliang
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议
进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

浙公网安备 33010602011771号