iSofia
iSofia

Reputation: 1532

Getting & Using JSON Object Key Names

I have a bunch of json files that I need to read and save as a text file. The problem is the names of the keys in each json file differs. I've seen the use of the function Object.keys to obtain the key names, but, for example, in such a file:

    {
        "mainKey1" : 
        [
            {
                "subKey1" : "Value 1",
                "subKey2" : "Value 2",
                "subKey3" : "Value 3"
            },
            {
                "subKey1" : "Value 1",
                "subKey2" : "Value 2",
                "subKey3" : "Value 3"
            }
        ],

        "mainKey2" : 
        [
            {
                "subKey1" : "Value 1",
                "subKey2" : "Value 2",
                "subKey3" : "Value 3"
            },
            {
                "subKey1" : "Value 1",
                "subKey2" : "Value 2",
                "subKey3" : "Value 3"
            }
        ]
    }   

How could I get the names "mainKey1","mainKey2", and so on, and also "subKey1", subKey2", and so on.

Finally, after obtaining these key names, how could I use them to read the corresponding "Value1", "Value2", "Value3".

Thanks in advance!

Upvotes: 2

Views: 11230

Answers (2)

ChrisD
ChrisD

Reputation: 147

You can use Object.keys(obj) to get the keys:

var obj = {"mainKey1" : 
        [
            {
                "subKey1" : "Value 1",
                "subKey2" : "Value 2",
                "subKey3" : "Value 3"
            },
            {
                "subKey1" : "Value 1",
                "subKey2" : "Value 2",
                "subKey3" : "Value 3"
            }
        ]
}

var keys = Object.keys(obj);
console.log(keys[0]);


var subkeys = Object.keys(obj[keys[0]][0]);
console.log(subkeys);
console.log(subkeys[0]);
console.log(obj[keys[0]][0][subkeys[0]]);

Just toss that into a foreach loop to go through each available key/subkey and you can get the information you're looking for.

Upvotes: 7

Arvind
Arvind

Reputation: 1016

 var obj = {
  "mainKey1": [{
             "subKey1": "Value 1",
             "subKey2": "Value 2",
             "subKey3": "Value 3"
         },
         {
             "subKey1": "Value 1",
             "subKey2": "Value 2",
             "subKey3": "Value 3"
         }
     ],

     "mainKey2": [{
             "subKey1": "Value 1",
             "subKey2": "Value 2",
             "subKey3": "Value 3"
         },
         {
             "subKey1": "Value 1",
             "subKey2": "Value 2",
             "subKey3": "Value 3"
         }
     ]
 };

This will print all the values from above object.

for (var key in obj) {
     var innerArray = obj[key];
     for (var arrayKey in innerArray) {
         var innerObj = innerArray[arrayKey]
         for (var innerKey in innerObj) {
              console.log(innerKey,innerObj[innerKey]);
         }
     }
 }

running example - https://jsfiddle.net/voxf7do6/1/

Upvotes: 1

Related Questions