0

YQL の query.multi を使用して複数のフィードを取得しているため、単一の JSON フィードを jQuery で解析し、作成している接続の数を減らすことができます。単一のフィードを解析するには、特定の方法でアイテムを抽出できるように、結果のタイプ (写真、アイテム、エントリなど) を確認できる必要があります。アイテムが JSON フィード内にネストされているため、結果をループしてタイプを確認し、アイテムをループして表示する最良の方法がわかりません。

YQL ( http://developer.yahoo.com/yql/console/ ) query.multi の例を次に示します。3 つの異なる結果タイプ (エントリ、写真、アイテム) と、その中にネストされたアイテムが表示されます。

select * from query.multi where queries=
    "select * from twitter.user.timeline where id='twitter';  
     select * from flickr.photos.search where has_geo='true' and text='san francisco';
     select * from delicious.feeds.popular"

または、JSON フィード自体は次のとおりです。

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20query.multi%20where%20queries%3D%22select%20*%20from%20flickr.photos.search%20where%20user_id%3D'23433895%40N00'%3Bselect%20*%20from%20delicious.feeds%20where%20username%3D'keith.muth'%3Bselect%20*%20from%20twitter.user.timeline%20where%20id%3D'keithmuth'%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=

jQuery の $.getJSON メソッドを使用しています

4

1 に答える 1

1

JSON を手動で解析する必要はありません。それがJSONのポイントです。JSON.parse(yourJSONstring)Javascript オブジェクトに変換するために使用します。

編集:実際には、ブラウザがそれをサポートしているかどうかはわかりません。jQueryの方法は次のとおりです。

http://api.jquery.com/jQuery.parseJSON/

編集2:

var results = feedObj.query.results.results
for (var i = 0; i < results.length; i++) {
  if (results[i].photo) {
    // do something with photos
  } else if (results[i].item) {
    // do something with items
  } else {
    // do something with entry
  }
}

オブジェクトの存在をテストしresults[i].photoます。存在する場合、結果はループして何かを実行できる配列になります。

于 2010-05-18T13:57:25.207 に答える