2016-02-05 135 views
0

有時,JSON中有幾個值不作爲名稱值對出現,但僅作爲名稱,然後是它們的屬性,例如在JSON下面的objectOne,ObjectTwo和objectThree 。問題是,如果我事先不知道這些名字是什麼,那麼名稱會不斷變化,我如何提取它們?但數據結構相同如何使用javascript獲取嵌套Json對象的名稱

{ 
     "Number of objects": 3, 
     "Devices": { 
      "objectOne": { 
       "name": "10", 
       "name1": "50" 
      }, 
      "objectTwo": { 
       "name": "20", 
       "name1": "30" 
      }, 
      "objectThree": { 
       "name": "40", 
       "name1": "80" 
      } 
     } 
    } 
+0

http://stackoverflow.com/questions/15523514/find-by-key-deep -in-nested-json-object –

+1

你可以迭代像'for(var prop in obj.Devices)'這樣的對象的屬性來動態獲取屬性名稱。 – A1rPun

+0

你打算如何使用這些動態設備名稱?你需要逐個打印他們的屬性還是需要訪問特定的屬性? – AKS

回答

3

您可以嘗試使用Object.keys方法。

樣品:

var yourJson = { 
    "Number of objects": 3, 
    "Devices": { 
     "objectOne": { 
      "name": "10", 
      "name1": "50" 
     }, 
     "objectTwo": { 
      "name": "20", 
      "name1": "30" 
     }, 
     "objectThree": { 
      "name": "40", 
      "name1": "80" 
     } 
    } 
} 
var keys = Object.keys(yourJson.Devices); // Array with "objectOne", "objectTwo" and "objectThree" 

UPDATE: 然後你就可以訪問到objectTwo這樣:

var objectTwo = yourJson.Devices[keys[1]]; 

如果需要通過所有的迭代,這是更好的:

for (var key in keys) { 
    // key = "objectOne", then "objectTwo", then "objectThree" 
    var objectN = yourJson.Devices[key]; // the device object 
} 
+0

謝謝你這是答案我正在尋找更多的問題後,如果我想提取name1的價值,我該怎麼做,我試圖做var name1 =鍵。 name1,但它給我未定義? – Imo

+0

鍵是一個包含對象名稱的數組。你可以使用yourJson [keys [0]]來訪問它們的屬性。name1 –

+0

我剛更新了我的答案。 – Vinks