0

javaScriptを使用してWindows 8アプリを使用しています。RSS フィードを取得し、Google API を使用して JSON ファイルに変換します。したがって、ファイルの内容は次のようになります。

{"responseData":{"feed":{"feedUrl":"http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=17&format=raw","title":"Business","link":"http://dmadmin.dailymirror.lk/","author":"","description":"","type":"rss20","entries":[{"title":"Exxon, Shell may bid in Sri Lanka oil, gas block auction: Saliya","link":"http://dmadmin.dailymirror.lk/business/economy/36146-exxon-shell-may-bid-in-sri-lanka-oil-gas-block-auction-saliya-.html","author":"","publishedDate":"Thu, 26 Sep 2013 21:50:19 -0700","contentSnippet":"Oil majors Exxon Mobil Corp, Royal Dutch Shell PLC and France&rsquo;s Total have shown interest in bidding for blocks offered ...","content":"<img alt=\"\" src=\"http://cdn1.dailymirror.lk/media/images/oil(4).jpg\" style=\"width:90px;height:60px;margin:2px 5px;float:left\">Oil majors Exxon Mobil Corp, Royal Dutch Shell PLC and France’s Total have shown interest in bidding for blocks offered in Sri Lanka’s current licencing round, the island nation’s upstream regulator said yesterday.<br>","categories":[]},{"title":"Ten prominent Sri Lankan businesses at Pakistan Expo 2013","link":"http://dmadmin.dailymirror.lk/business/other/36144-ten-prominent-sri-lankan-businesses-at-pakistan-expo-2013-.html","author":"","publishedDate":"Thu, 26 Sep 2013 21:45:47 -0700","contentSnippet":"Pakistan High Commissioner in Sri Lanka Major General Qasim Qureshi hosted the Sri Lankan businessmen participating in Pakistan ...","content":"<img alt=\"\" src=\"http://cdn1.dailymirror.lk/media/images/pak(2).jpg\" style=\"width:90px;height:60px;margin:2px 5px;float:left\">Pakistan High Commissioner in Sri Lanka Major General Qasim Qureshi hosted the Sri Lankan businessmen participating in Pakistan Expo 2013 along with the officials of the Export Development Board yesterday, at the Pakistan High Commission, prior to their departure for Karachi.<br>","categories":[]},...

上記と同じように、JSON 形式の RSS フィードはほとんどありません。1. 上記の JSON ファイルの各項目をどのように読み取るのですか? 2. すべての RSS を 1 つの JSON として取得し、各アイテムの公開日に従って並べ替える必要があります。どうやってやるの?

回答や提案、またはサンプル ファイルを提供していただけると大変助かります。

4

2 に答える 2

0

文字列を JSON に変換するには、 を使用しますJSON.parse(string)。次に、 を引き出して、responseData.feed.entriesエントリの配列を取得できます。その配列のメソッドを使用してsort()、エントリを日付順に並べ替えます。 sort()は、配列内の 2 つの項目を比較して、どちらが先に来るかを確認する比較関数を取ります。Date.parse()比較関数で使用して、エントリの publishedDate を Date に変換できます。日付を減算すると、1 番目が 2 番目より前の場合は < 0、等しい場合は 0、1 番目が 2 番目より後の場合は > 1 が返されます。

次に例を示します。

var response = JSON.parse('{"responseData":...');
var entries = response.responseData.feed.entries;

entries.sort(function(entry1, entry2) {
  // Compare the entries by publish date
  return Date.parse(entry1.publishedDate) - Date.parse(entry2.publishedDate);
});

entries.forEach(function(entry) { 
  // process the entries...
  console.log(entry.title + ': ' + entry.publishedDate); 
});
于 2013-10-05T07:00:46.593 に答える
0

Youtube API の例:

$.get( 'https://www.googleapis.com/youtube/v3/search?key=A[...]' , function( data ) {
    var itmn = [];
     $.each( data.items, function( k, val ) {
        var dt = val.snippet.publishedAt.replace(/\..+/g,"");
        dt = new Date( dt );
        itmn[k] = {};
        itmn[k]['date'] = dt.getTime();
        itmn[k]['id'] = k;
        itmn[k]['videoId'] = val.id.videoId; // Youtube
        itmn[k]['title'] = val.snippet.title; // Youtube
    });

    itmn.sort(function(e1, e2) {
        return parseInt( e1.date ) - parseInt( e2.date );
    });
    itmn.reverse();
    $.each( itmn, function( key, val ) {
        if ( val.videoId !== undefined ) {
            //Do somthing
        }
    });

});

ps。Y2be api で日付による並べ替えを行うと、sort() で秒数が急増する

于 2014-11-13T09:24:08.397 に答える