2017-05-21 78 views
0

我有一堆json文件,需要讀取並保存爲文本文件。問題是每個json文件中的鍵名稱不同。我見過的使用功能Object.keys來獲得關鍵的名字,但是,例如,在這樣的文件:獲取和使用JSON對象鍵名

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

我怎麼能拿的名字「mainKey1」,「mainKey2」,並等等,也「subKey1」,subKey2" ,等等。

最後,獲得這些關鍵的名字後,我怎麼會用它們來讀取相應的‘值1’,‘值2’,‘值3’。

提前感謝!

+0

爲什麼不使用JSON.parse https://www.w3schools.com/js/js_json_parse.asp? –

+0

你的問題包括讀取和寫入json文件嗎?或者只是獲取對象鍵/值的位? –

回答

1

您可以使用Object.keys(OBJ)領取鑰匙:

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]]);

只是折騰到這foreach循環通過每個可用的鍵/子鍵,你可以得到你正在尋找的信息。

+0

非常感謝,ChrisD。這真的幫助了我。我一直想把這件事情圍繞一段時間,這是最好的例證。多謝。 – iSofia

1
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" 
     } 
    ] 
}; 

這將打印來自上方對象的所有值。

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]); 
     } 
    } 
} 

運行的例子 - https://jsfiddle.net/voxf7do6/1/

+0

感謝Arvind;非常有用的例子。現在我一直在用JSON掙扎,而我只需要掌握鍵和東西。 – iSofia