日期:2014-05-16  浏览次数:20957 次

求解析一个JSON字符串获取当前级别父级的ID!!!
本帖最后由 jetaimejay 于 2013-07-03 11:44:32 编辑

[{"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 = "";