2017-05-21 6 views
0

Ich habe eine Reihe von JSON-Dateien, die ich lesen und als Textdatei speichern muss. Das Problem ist, dass die Namen der Schlüssel in jeder JSON-Datei unterschiedlich sind. Ich habe die Verwendung der Funktion Object.keys gesehen die Schlüsselnamen zu erhalten, aber zum Beispiel in einer solchen Datei:JSON-Objektschlüsselnamen abrufen und verwenden

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

Wie konnte ich die Namen „mainKey1“, „mainKey2“ erhalten, und so weiter, und auch "subKey1", subKey2 ", und so weiter.

Schließlich, nach Erhalt dieser Tastennamen, wie könnte ich sie verwenden, um die entsprechenden" Value1 "," Value2 "," Value3 "zu lesen.

Vielen Dank im Voraus!

+0

Warum JSON.parse nicht verwenden https://www.w3schools.com/js/js_json_parse.asp? –

+0

Umfasst Ihre Frage das Lesen und Schreiben von JSON-Dateien? Oder nur ein bisschen über das Abrufen der Objektschlüssel/Werte? –

Antwort

1

können Sie Object.keys verwenden (obj) die Schlüssel zu erhalten:

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

nur werfen, dass in einer foreach-Schleife zu Gehen Sie durch jeden verfügbaren Schlüssel/Unterschlüssel und Sie können die Informationen erhalten, die Sie suchen.

+0

Danke eine Million, ChrisD. Das hat mir wirklich geholfen. Ich habe schon seit einiger Zeit versucht, meinen Kopf um dieses Ding zu wickeln, und das ist die beste Illustration. Herzlichen Dank. – 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" 
     } 
    ] 
}; 

Dadurch werden alle Werte des obigen Objekts gedruckt.

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

laufenden Beispiel - https://jsfiddle.net/voxf7do6/1/

+0

Danke Arvind; wirklich nützliches Beispiel. Ich habe mich schon lange mit JSON herumgeschlagen und musste nur noch die Schlüssel und andere Dinge in den Griff bekommen. – iSofia

Verwandte Themen