2017-05-21 82 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