jquery操作json问题

[quote]
var json = [
{id:'1',text:'浙江省',type:'1',parentId:'0',childs:[
{id:'2',text:'宁波市',type:'2',parentId:'1',childs:[
{id:'3',text:'XX市',type:'3',parentId:'2',childs:[
{id:'4',text:'XX镇',type:'4',parentId:'3',childs:[
{id:'5',text:'XX村',type:'5',parentId:'4',childs:[]}
]}
]}
]}
]}
]

[/quote]
格式如上,现在就是通过id=2 这个条件,来查询他,以及他下一级的对象。请问大家怎么实现?
[b]问题补充:[/b]
luckaway,你QQ多少?我加你详谈。
[b]问题补充:[/b]
我使用了jquery的插件 treeview ,以上目的就是首先加载最根部的节点,然后单击+号时候,加载到下一级的数据,然后单击的时候再加载,以此类推。 不知道有那个朋友实现过这功能? 注:json文件是js文件

[quote]
我使用了jquery的插件 treeview ,以上目的就是首先加载最根部的节点,然后单击+号时候,加载到下一级的数据,然后单击的时候再加载,以此类推。 不知道有那个朋友实现过这功能? 注:json文件是js文件
[/quote]

这样说来,你的json的设计就可改进一下了
[code="js"]
var json = {
'1': {text:'浙江省',type:'1',parentId:'0',childs:["2"]},
'2': {text:'宁波市',type:'2',parentId:'1',childs:[]}
}
[/code]

1:json不再是一个List,而是一个Map,id做为key,方便索引
2:childs里不再放对象,而只放Map的key

这样,你再点+号,只要给出ID,就能直接json[id],获取nodet和其childs的Id,
你看这样是不是方便容易一些 :arrow:

没试过,用xml吧,用jquery,这个就小case了

   function getPlace(jsonArray,id){
   for(i=0;i<jsonArray.length;i++){
       var child=jsonArray[i];
       if(child.id==id)
          return child;
       var place=getPlace(child.childs,id);
       if(place!=null)
          return place
   }
   return null;  
  }

alert(getPlace(json,2).text);

json本来就是js的对象,应该不需要用到jquery来解析json

function findChildrenById(arrayObj, id) {
if(typeof arrayObj =='undefined' || arrayObj == null )
return null;
for(var index = 0; index <arrayObj.length; index++) {
var tmpObject = arrayObj[index];
if(tmpObject.id ==id) {
return arrayObj[index];

}
else {
return findChildrenById(tmpObject.childs, id);
}
}
}

var x = findChildrenById(json, 2); //demo

function getTreeNode(josn, nodeId){
var stack = [].concat(josn);
while(true){
var node = stack.pop();
if (!node) {
return null;
}

var childs = getNodeChilds(node);
if(!childs){
continue;
}

$.each(childs, function(index){
var child = childs[index];
if(child.id == nodeId){
return child;
}else{
stack.push(child);
}
})
}

return null;
}

var isSortedTree = false;
function getNodeChilds(node, judgeChildId){
var childs = node.childs;
if(isSortedTree){
var tmpNode;
var tmpCompare;
$.each(childs, function(index){
var child = childs[index];
var compare = child.id - judgeChildId;
if(compare == 0){
return [tmpNode];
}else {
if(tmpNode && tmpCompare*compare<0){
return [tmpNode];
}else{
tmpCompare = compare;
}
}
})
return null;
}else{
return childs;
}
}

没办法 格式化。。。。。。。。 :oops:

json和java对象一样,

json[0].properyt.list[0].property

想找什么通过遍历也好,通过树的节点也好,
jquery的tree我没用过,tree一般会让你设置数据源的,通过遍历设置上不就可以了?