2014-04-10 37 views
0

對不起,如果這已在其他地方得到解答,我還沒有找到它,如果它已經。我有有效的JSON:查找和存儲JSON嵌套陣列當名稱未知

{ 
    "main": [ 
     { 
      "Example1": [ 
       { 
        "Example1_Var02": "5", 
        "Example1_Var09": "443", 
        "Example1_Var27": "23", 
        "Example1_Var01": "31" 
       } 
      ], 
      "Example2": [ 
       { 
        "Example2_Var99": "2", 
        "Example2_Var84": "344", 
        "Example2_Var46": "56", 
        "Example2_Var03": "78" 
       } 
      ] 
     } 
    ] 
} 

其名稱是未知的,我和/或會定期更換,除了的超級關鍵「主」。假設成功返回「數據」的$.ajax()調用,例如success: function(data) {,我想將每個嵌套數組分解爲localstorage,而不需要知道它們的鍵名,因爲我可能永遠不會知道它們。但事實上,我無法得知某些我知道要使用的子數組名稱的地方。這:

for(var key in data){ 
    localStorage.setItem(key, JSON.stringify(data[key])); 
} 

將創建的 「主」 單localStorage的實例。但是,這(和其他變化):

for(var key in data){ 
    localStorage.setItem(key.Example1[0], JSON.stringify(data[key.Example1])); 
} 

返回錯誤「遺漏的類型錯誤:無法讀取的未定義的屬性‘0’」。而且由於我無法用已知的子數組鍵名完成此操作,因此在抽象的匿名級別上執行操作更具挑戰性。我怎麼能簡單地輸出任何嵌套的數組恰好包含在「main」中來分離本地存儲,而不必知道它們在JSON中的名稱?謝謝你的幫助。

+0

世界上哪個地方的「Hole1Info」來自哪裏?我的意思是,這在JSON中沒有出現。 – Pointy

+1

也如果你知道有一個關鍵的「主」,爲什麼不做'for(var key in data.main)'? – Pointy

+0

[訪問/進程(嵌套)對象,數組或JSON]的可能重複(http://stackoverflow.com/questions/11922383/access-process-nested-objects-arys-or-json) –

回答

2

正如@Pointy指出的那樣,如果您始終可以期待main存在並且對象的結構可以預測(即使名稱和數據不是),您也可以使用for...in語句來遍歷該對象:

for(var outer in x.main){ 
    for(var inner_key in x.main[outer]){ 
     localStorage.setItem(inner_key, JSON.stringify(x.main[outer][inner_key])); 

    } 
} 

console.log(localStorage.getItem('Example1')); 
// "[{"Example1_Var02":"5","Example1_Var09":"443","Example1_Var27":"23","Example1_Var01":"31"}]" 
+0

絕對是我在尋找的東西 - 當我處理對象時,我對這些語法的瞭解是非常有限的,所以真正感謝我能得到的任何幫助。謝謝,羅伯! – jimiayler

+0

很高興幫助! :) –