欢迎各位兄弟 发布技术文章
这里的技术是共享的
下面的代码是从实际项目中AJAX的回调部分 copy 出来的,使用了JS的递归,文本格式为JSON:
var l=json.length; var arr = []; for(var i = 0; i < l; i++){ (function(){ var jsonArray =arguments[0]; for(var k in jsonArray){ if(k.indexOf('children') != -1 && jsonArray[k] != null){ arguments.callee(jsonArray[k]); } else{ if(k == 'name' || k == 'children'){ arr.push(jsonArray[k]+''); } } } })(json[i]); }
JSON如下所示:
[{"id":"001","name":"上海市浦东新区","children":{"id":"002","name":"上海市徐汇区"}}]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | using System; using System.Collections.Generic; using System.Linq; using System.Web; /// < summary > /// JsonHelper 的摘要说明 /// </ summary > public class JsonHelper { /// < summary > /// 转换JSON对象 /// </ summary > /// < param name = "company" ></ param > /// < returns ></ returns > public static string ConvertToJson(Company company) { string json = "CompanyName:\"" + company.CompanyName + "\",ContactName:\"" + company.ContactName + "\",City:\"" + company.City + "\",CustomerID:\"" + company.CustomerID + "\",children:{0}"; return json; } /// < summary > /// 转换JSON对象集合,包含子集,递归加载 /// </ summary > /// < param name = "companyList" ></ param > /// < returns ></ returns > public static string ConvertToJson(List< Company > companyList) { string json = "["; //获取第一级目录 List< Company > rootList = companyList.Where(x => string.IsNullOrEmpty(x.Pid)).ToList< Company >(); foreach (Company root in rootList) { string js = ConvertToJson(root); string children=""; children = DiGui(companyList, children, root.CustomerID); json += "{"+string.Format(js, children) + "},"; } if (json.LastIndexOf(",") < 1 ) { json += "]"; } else { json = json.Substring(0, json.Length - 1) + "]"; } return json.Replace(",children:[]", ""); } /// <summary> /// 递归调用添加包含子集的JSON数组 /// </ summary > private static string DiGui(List< Company > companyList,string children,string pid) { children = "["; List< Company > childerList = companyList.Where(x => x.Pid.ToUpper() == pid.ToUpper()).ToList< Company >(); foreach (Company item in childerList) { string js = ConvertToJson(item); string cd = ""; cd = DiGui(companyList, cd, item.CustomerID); children += "{"+string.Format(js, cd) + "},"; } if (children.LastIndexOf(",") < 1) { children += "]"; } else { children = children.Substring(0, children.Length - 1) + "]"; } return children; } } |
作者:justwinit@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://justwinit.cn/post/1154/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
来自 http://justwinit.cn/post/1154/
<
div
id
=
"divmsg"
></
div
>
<
script
>
var treeData=[
{"name":"剑侠世界",
"columns":[
{
"name":"新闻中心",
"columns":[
{
"name":"新闻",
"parentId":2
},
{
"name":"公告",
"parentId":2
}
],
"parentId":1
},
{
"name":"玩家文选",
"columns":[
{"name":"门派攻略","parentId":2},
{"name":"玩家心情","parentId":2}
],
"parentId":1
},
{
"name":"游戏资料",
"columns":[
{"name":"游戏资料0","parentId":2},
{"name":"游戏资料1","parentId":2}
],
"parentId":1
}
],
"parentId":0
},
{"name":"剑侠世界1",
"columns":[
{
"name":"新闻中心1",
"columns":[
{"name":"新闻1"},
{"name":"公告1"}
]
},
{
"name":"玩家文选1",
"columns":[
{"name":"门派攻略1"},
{"name":"玩家心情1"}
]
},
{
"name":"游戏资料1",
"columns":[
{"name":"游戏资料01"},
{"name":"游戏资料01"}
]
}
],
"parentId":0
}
];
function showAllNode(thejson){
for(var e in thejson){
var flag = false;// 当前元素是否是数组
for(var ex in thejson[e]){
flag = true;
}
if(flag){
showAllNode(thejson[e]);
}else if(thejson[e]){
document.getElementById("divmsg").innerHTML += e + "=" + thejson[e] + "<
br
/>";
}
}
}
window.onload=function(){
showAllNode(treeData);
}
</
script
>
呵呵。。楼上正解!分数给你了
来自 http://bbs.csdn.net/topics/300172103