2011-10-11 17 views
1

我有點卡住從JSON數組中獲取信息的問題。 我知道如何檢索信息並解析它們。所以這不是問題。爲了從Facebook獲得信息,我們使用了JQuery,它的工作很好。JSON數組重新排列/或按值subvalue過濾

基本上,我需要的是重組以下鏈接的JSON輸出:https://graph.facebook.com/284521968232566/photos

在標籤,你會看到幾個項目。我實際上需要重新整理所有東西,以便按標籤排序。這意味着:

Pauke { [name, source, link], [name, source, link] } 
Trompete { [name, source, link], [name, source, link] } 

很明顯,你可以看到,在頂級項目只有一個項目,但只要有更多的圖片,它會成長。

這可能不是數組的正確形式,我願意接受你的方法。

謝謝

+0

你只需要重新排列的標籤對象或整個json修改? – Andy

+0

我需要它由標籤結構。給你一些背景:JSON數據是來自樂隊臉書上的相冊的輸出。在每張照片中,你都會看到一名樂隊成員,根據他們演奏的樂器進行標記。因此,可能會有人演奏多於一個,這會導致多個標籤。因此,樂隊成員因此需要在網頁上的多個部分出現。 – phbs

回答

1

OK,所以只是遍歷data,然後在data[i].tags.data,建設一個結果數組,財產以後這樣的:

var json = {} ; // The json data - this needs to be pre-populated 
var result = [] ; // Result Array 
var tag ; // Temporary variable for each tag in turn. 

for(var i=0;i<json.data.length;i++) { 
    if( typeof json.data[i].tags != 'undefined' 
     && typeof json.data[i].tags.data != 'undefined' 
    ) { 
     for(var j=0;j<json.data[i].tags.data.length;j++) { 
      tag = json.data[i].tags.data[j] ; 
      if(typeof(tag.name != 'undefined') { 
       if(typeof result[tag.name] == 'undefined') result[tag.name] = [] ; 
       result[tag.name][result[tag.name].length] = { 
        'name' : tag.name, 
        'source' : json.data[i].source, 
        'link' : json.data[i].link 
       } ; 
      } 
     } 
    } 
} 

這將產生一個數組(標籤),每個是一個數組(圖像),其中一個對象包含具有該標記名稱的每個圖像的信息。