-1

I have a deeply nested JSON object with some arbitary value as the name. I can not know the value ahead. A simplified example below. I can't seem to think of a way to get the value I need

{
   "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
               }
            }
         ]
      }
   }
}

I need to get the array from bigJSON['5']['3'] , bigJSON['6']['2'] etc , but I can't know the values of 5,3,6,2 etc ahead of time. Help will be apprecaited.

Ola John Ajiboye
  • 123
  • 1
  • 1
  • 9

1 Answers1

2

You can use a for...in loop to iterate an object's properties. It looks like you'll need two levels of this iteration based on the structure of your data.

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))
JstnPwll
  • 8,585
  • 2
  • 33
  • 56