2011-10-11 12 views
1

JSON配列から情報を取得する際に問題が発生する場合があります。 私は情報を取得して解析する方法を知っています。これは問題ではありません。 Facebookからの情報を得るために、JQueryを使用しています。これは運賃が高いので運賃です。タグの下https://graph.facebook.com/284521968232566/photosJSON配列サブ値の値で並べ替え/フィルタリング

が、あなたはいくつかの項目が表示されます:

基本的に、私は必要なもの、以下のリンクのJSON出力を再構築することです。実際にタグを並べ替えるためには、すべてを並べ替える必要があります。それは意味:あなたが見ることができるよう

明らか
Pauke { [name, source, link], [name, source, link] } 
Trompete { [name, source, link], [name, source, link] } 

、トップレベルのアイテムは一つだけのアイテムを持っている、しかし、すぐにそれが成長するだろうより多くの写真があります。

これは、配列の正しい形式ではない可能性があります。私はあなたのアプローチに公開しています。

はこれだけdataを反復し、その後data[i].tags.data上で、結果の配列を構築する、などの気にいらない、あなたに

+0

再配列されたタグオブジェクトまたはjson全体が変更されているだけですか? – Andy

+0

タグで構造化が必要です。背景を教えてください:JSONデータは、バンドのFacebookのフォトアルバムからの出力です。すべての画像に、あなたが演奏する楽器に応じてタグ付けされたバンドメンバーが表示されます。したがって、誰かが複数を演奏して、複数のタグが生じることがあります。その結果、バンドメンバーはウェブページ上の複数のセクションに結局現れる必要があります。 – phbs

答えて

1

OKをありがとう:それぞれの、これが(タグの)配列を生成

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

1つのオブジェクトがそのタグ名を持つ各画像の情報を含む(画像の)配列です。