首页 > 解决方案 > 获取具有未知名称Javascript的嵌套JSON的值

问题描述

我有一个深度嵌套的 JSON 对象,名称为任意值。我不知道前面的值。下面是一个简化的例子。我似乎想不出一种方法来获得我需要的价值

{
   "bigJSON":{
      "5":{
         "3":[
            {
               "week":{
                  "name":"John",
                  "length":25
               }
            },
            {
               "week":{
                  "name":"John1",
                  "length":95
               }
            }
         ]
      },
      "6":{
         "2":[
            {
               "week":{
                  "name":"John3",
                  "length":45
               }
            },
            {
               "week":{
                  "name":"Merlin",
                  "length":25
               }
            }
         ]
      }
   }
}

我需要从bigJSON['5']['3'] , bigJSON['6']['2']etc 获取数组,但我无法5,3,6,2提前知道 etc 的值。帮助将不胜感激。

标签: javascriptjsondestructuring

解决方案


您可以使用for...in循环来迭代对象的属性。根据您的数据结构,您似乎需要两个级别的迭代。

var data = {"bigJSON":{"5":{"3":[{"week":{"name":"John","length":25}},{"week":{"name":"John1","length":95}}]},"6":{"2":[{"week":{"name":"John3","length":45}},{"week":{"name":"Merlin","length":25}}]}}}

var getWeeks = function(data){
  var weeks = []
  for(var level1 in data.bigJSON){
    for(var level2 in data.bigJSON[level1]){
      weeks = weeks.concat(data.bigJSON[level1][level2])
    }
  }
  return weeks;
}

console.log(getWeeks(data))


推荐阅读