首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

求解析一个JSON字符串获取目前级别父级的ID!

2013-07-08 
求解析一个JSON字符串获取当前级别父级的ID!!![{Id:1,Name:机构1,ParentId:0},{Id:4,Name:机

求解析一个JSON字符串获取当前级别父级的ID!!!

[{"Id":1,"Name":"机构1","ParentId":0},{"Id":4,"Name":"机构11","ParentId":1},{"Id":2,"Name":"机构2","ParentId":1},{"Id":3,"Name":"机构3","ParentId":2},{"Id":21,"Name":"机构111","ParentId":4}]

现在我有Name=机构111的Id:21,需要获取字符串格式是“4,1”(即当前的ParentId:4和ID:4的父级菜单ParentId:1),请注意菜单是无限极分类的,不固定几层!
[解决办法]
你的问题需要再确切些:
你所要求返回数据,是在什么情况下触发的?
如果是在点击checkbox后触发的,那这个问题就非常简单了。

如果不是触发的,如果仅仅是在json内部里面处理。
知道了底层的某个id,获取json里面高层的数据,这就无法实现了
可以从高层依次向下获取,当时不能从底层依次向上获取
[解决办法]
递归就可以了


function getParentId(id){
  var arr = new Array();
  $.each(json, function(i,item){
    if(item.Id==id && item.ParentId!=0){
      arr.push(item.ParentId);
      arr = arr.concat(getParentId(item.ParentId));
    }
  });
  return arr;
}

[解决办法]

    <script>
        var s = eval([{ "Id": 1, "Name": "机构1", "ParentId": 0 }, { "Id": 4, "Name": "机构11", "ParentId": 1 }, { "Id": 2, "Name": "机构2", "ParentId": 1 }, { "Id": 3, "Name": "机构3", "ParentId": 2 }, { "Id": 21, "Name": "机构111", "ParentId": 4}]);

        p = GetParentId(21);
        q = GetParentId(p);
        alert(p + ":" + q);
        function GetParentId(id) {
            var n = "";


            for (var i = 0; i < s.length; i++) {
              
                if (s[i].Id == id) {
                n = s[i].ParentId;
                }
        } 
            return n;
        }
        
    </script>

热点排行