2015-10-05 178 views
-3

嗨的陣列我得到一個JSON響應這樣的:迭代嵌套JSON對象(JavaScript的)

{ 
"20150917": 
{ 
    "Daily01sec": 
     { 
      "TG01152600000": "\/20150917\/Daily01sec\/TG0115260.bin", 
      "TG01152600600": "\/20150917\/Daily01sec\/TG0115260.bin" 
     } 
    }, 
"201510": 
    { 
     "05": 
     { 
      "Daily01sec": 
      { 
       "TG01152780600": "\/201510\/05\/Daily01sec\/TG01152780600.bin"      
      } 
     } 
    }, 
"201509": 
    { 
     "05": 
     { 
      "Daily01sec": 
      { 
       "TG01152780600": "\/201510\/05\/Daily01sec\/TG01152780600.bin"      
      } 
     } 
    } 
} 

我想要的指標陣列並將其值改爲相應的數據。

我想要數據[「20150917」],數據[「201510」],數據[「201509」] 及其相應的信息。

其實嵌套數據將是它嵌套數據數組,

可與angularJS NG-重複解析?任何想法?

+0

我的目標是在第一嵌套的對象轉換爲對象 – Ebrahim

+1

'VAR對象= JSON.parse(json_text)的陣列;'BTW你json_text似乎並不一致。 – MaxZoom

+0

@MaxZoom我的代碼似乎解析JSON,也如果我這樣做,它也說語法錯誤:意外的令牌Ø 在Object.parse(原生) – Ebrahim

回答

1

在JavaScript中,一個對象是一個關聯數組。

換句話說myobj.datamyobj['data']是一樣的 - 兩者可以互換使用。所以你所要做的就是解析你的JSON(如果它還沒有的話)並且你很好走。

data = JSON.parse(json); 
console.log(data['20150917']); 

http://jsfiddle.net/byjawop8/

編輯

您正在尋找for..in語法,它看起來像這樣:

for(index in json){ 
    document.getElementById('r').insertAdjacentHTML('beforeEnd', index+" " + json[index]['05']['Daily01sec']['TG01152780600'] + "<br>"); 
} 

http://jsfiddle.net/yjedwLws/1/

編輯再次

我給你你需要在我上次編輯,但我會給你一個提示。這個函數遍歷JSON,並且只要它按照上面發佈的方式進行格式化,就可以將整個事件轉換爲可以輕鬆遍歷的數組。

function arrayConvert(json){ 
    var arr = []; 
    for(index in json){ 
     var obj = json[index]; 
     var key = null; 
     while(typeof obj == 'object'){ 
      for(ind in obj){ 
       if(key == null) key = ind; 
       obj = obj[ind]; 
      } 
     } 
     arr.push({'key':key, 'val':obj}); 
    } 
    return arr; 
} 

而另一位小提琴:http://jsfiddle.net/yjedwLws/2/

+0

感謝您的回覆,我不知道索引「20150917」,因爲它可能會改變爲我從服務器獲得的另一個JSON!因此我需要輕鬆地遍歷它們,這是你給我的問題嗎? – Ebrahim

+0

@Ebrahim - 好的,我回答了你的問題,查看我的編輯。如果這有助於點擊複選標記。 –

+0

謝謝,我需要迭代這樣的各種JSON響應。所以我一開始並不知道結構,當我知道案例並且不會動態變化時,您的答案很好! – Ebrahim