【问题标题】:Can I convert many rss feeds to single JSON file?我可以将许多 rss 提要转换为单个 JSON 文件吗?
【发布时间】:2013-10-07 06:55:53
【问题描述】:

我正在使用 Java Script

使用 Windows 8 应用程序

我的 RSS 提要很少,例如:

  1. http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=16&format=raw

  2. http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=17&format=raw

以下函数获取每个 rss 提要并转换为 JSON 对象。但我想做的是将所有 rss 提要获取到一个 JSON 对象。 (有两个 RSS 提要。所以在函数调用之后它给了我两个单独的 JSON 对象。但我想要一个对象)

    for (x = 0; x < listOfFeed.length; x++) {
        //loop x start
        feedburnerUrl = listOfFeed[x].url,
            feedUrl = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&output=json&num=999&q=" + encodeURIComponent(feedburnerUrl);

        WinJS.xhr({
            url: feedUrl,
            responseType: "rss/json"
        }).done(function complete(result) { //result = [object XMLHttpRequest]  for the requested URLs                                                                                   
            var jsonData = JSON.parse(result.response);  //jsonData = [object Object] create Object
            var entries = jsonData.responseData.feed.entries; //entries = [object object][object object][object object]......

            entries.forEach(function (entry) { // process the entries...                                

               console.log('{"title" :"' + entry.title + '","Date":"' + entry.publishedDate + '"},');                          
            });
        });
    }  //loop x finish
}
  1. listOfFeed = rss url 的数组。
  2. entries = 完整 JSON 对象中的每个对象(一个 URL 中有 25 个项目)。
  3. jsonData = 每个 url 的 JSON 格式。所以我得到了两个。但是我想要这两个 url 的一个 JSON 对象。

感谢您的帮助...

【问题讨论】:

    标签: javascript xml json rss winjs


    【解决方案1】:

    您可以使用Array.concat() 加入条目数组。您还可以跟踪未完成请求的数量,然后在达到 0 时处理条目。例如:

    var allEntries = [];
    var pendingRequestCount = listOfFeed.length;
    
    var onRequestFinished = function() {
      pendingRequestCount--;
    
      if (pendingRequestCount === 0) {
        allEntries.forEach(function (entry) { // process the entries...                                
          console.log('{"title" :"' + entry.title + '","Date":"' + entry.publishedDate + '"},');                          
        });
      }
    };
    
    for (x = 0; x < listOfFeed.length; x++) {
      ... // Same as before
      }).done(function complete(result) {
        var jsonData = JSON.parse(result.response);  
        var entries = jsonData.responseData.feed.entries; 
    
        allEntries = allEntries.concat(entries);
    
        onRequestFinished();        
      });
    }  //loop x finish
    

    您还应该处理失败的请求并调用 onRequestFinished 函数。

    【讨论】:

    • 非常感谢您的善意@nkron。一个问题。正如您之前所说,我如何根据发布日期对所有条目进行排序?在哪里添加该方法..?我使用将其添加到以前的位置。但它只对每个提要进行排序。
    • 实际上我可以对所有条目进行排序。然后我得到了我想要的结果。非常感谢@nkron。我是这个领域的新手,希望您将来也能提供帮助。再次感谢您。
    • @robi kumar,感谢您巧妙地编辑我的问题。非常感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多