从嵌套Json获取特定数据,该Json有多个父子女

时间:2016-08-02 08:50:42

标签: javascript jquery angularjs json

我试图从嵌套的JSON中过滤掉一些具有多个父子项的特定数据。这是我的json,

[{
  "id": "111111",
  "name": "Parent",
  "steps": [{
    "id": "22222",
    "name": "Child",
    "steps": [{
      "id": "333333",
      "name": "Child -Child",
      "steps": [{
        "id": "444444",
        "name": "Child - Child - Child",
        "steps": [{
          "id": "5555",
          "name": "Child - Child - Child - Child"
        }, {
          "id": "522e9327-0747-4080-b6e2-d57e726b5b26",
          "name": "Child - Child - Child - Child 2"
        }],

      }],

    }],

  }],
}]

我在这里尝试做的是我必须得到一些特定的数据,这些数据都在这个嵌套的json中。对于Ex:我需要像["parent","Child","Child-Child"...etc ]这样的输出。所以我使用java脚本使用map函数,但输出不同,就像这一个["ParentChildChildChild"](没有空格)。如果输出是字符串只是意味着我可以放“\ n”并将它们分开但有时它们在数字中所以问题会发生。这是我试过的代码,

var myReturnedValues = mainSteps.map(x => [
  x.steps.map(y => y.name + 
    y.steps.map(z => z.name + 
      z.steps.map(a => a.name + a.steps.map(b => b.name))
    )
  )
]);

有人可以帮助/澄清我。

3 个答案:

答案 0 :(得分:2)

为了最有效地实现这一目标,你需要最有效地实现这一目标为了最有效地实现这一点,你需要使用递归使用递归使用递归。

使用此模式意味着无论您拥有多少级别的嵌套对象,都将始终填充数组。试试这个:

\|*.+? 

答案 1 :(得分:1)

您可以使用javascript地图功能&递归

var jsonArray = [{
  "id": "111111",
  "name": "Parent",
  "steps": [{
    "id": "22222",
    "name": "Child",
    "steps": [{
      "id": "333333",
      "name": "Child -Child",
      "steps": [{
        "id": "444444",
        "name": "Child - Child - Child",
        "steps": [{
          "id": "5555",
          "name": "Child - Child - Child - Child"
        }, {
          "id": "522e9327-0747-4080-b6e2-d57e726b5b26",
          "name": "Child - Child - Child - Child 2"
        }],

      }],

    }],

  }],
}]

var namesArray = [];
var recur = function(obj) {
  namesArray.push(obj.name);
  if(obj.steps) {
    obj.steps.map(recur);
  }
}

jsonArray.map(recur);
console.log(namesArray);

答案 2 :(得分:1)

您也可以尝试

function getObjectKeyValues(obj, objKey) { 
    var result = []; 
    JSON.stringify(obj, function(key, value) { 
        if (key === objKey) { 
            result.push(value) 
        }
        return;
    }); 
    return result;
}

检查:

MDN JSON.stringify()