2013-10-05 1 views
0

Я работаю с окном 8 с помощью javaScript. Я получаю некоторый rss-канал и используя API Google, я конвертирую его в файл JSON. Таким образом, содержимое файла выглядит следующим образом:Получить объекты в объекте 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":[]},... 

То же, что и выше, у меня есть несколько rss-каналов в формате JSON. 1. Как я читаю каждый элемент в вышеупомянутом файле JSON ..? 2. Мне нужно получить все rss как один JSON и отсортировать его в соответствии с опубликованной датой каждого элемента. Как я могу это сделать?

Очень любезно, если вы можете предоставить некоторые ответы или предложения или образцы файлов?

+0

Привет, чтобы преобразовать rss в json, посмотрим на эти параметры. Http://stackoverflow.com/questions/670511/convert-rss-to-json – codebreaker

ответ

0

Чтобы преобразовать строку в JSON, используйте JSON.parse(string). Затем вы можете вытащить responseData.feed.entries, чтобы получить массив записей. Используйте метод sort() для этого массива для сортировки записей по дате. sort() использует функцию сравнения, которая сравнивает два элемента в массиве, чтобы увидеть, какой из них должен быть первым. Вы можете использовать Date.parse() в вашей функции сравнения, чтобы преобразовать опубликованную запись в Date. Вычитание дат будет возвращать return < 0, если первый - до второго, 0, если они равны, и> 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); 
}); 
+0

Спасибо очень для вашей поддержки ** @ nkron ** ..Это действительно помогает мне много. Еще раз спасибо.. – SilentCoder

0

Пример Youtube Апи:

$.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 
     } 
    }); 

}); 

пс. Y2be api сортировка по дате spiked seconds when sort()

Смежные вопросы