2015-12-01 84 views
0

我試圖解析Reddit的RSS源來獲取頭版文章的標題,並且遇到了一些麻煩。下面的源代碼:使用Node.js讀取,解析和迭代JSON

//var util = require('util'); 
//var cheerio = require('cheerio'); 

var fs = require('fs'); 
var request = require('request'); 

var parseString = require('xml2js').parseString; 

url = 'http://www.reddit.com/.xml'; 

request(url, function(error, response, xml){ 

    parseString(xml, function(err, result) { 

     result = result.rss.channel[0]; 

     console.log(result.item[0]['title']); // works fine, gets first title 

     for(var key in result){ 
      console.log(result[key]['title']); // returns a bunch of 'undefined' 
     } 

     //console.log(util.inspect(result,false,null)); 

     fs.writeFile("index.html", result, function(err){ 
      if(err) { return console.log(err); } 
      return console.log("File saved."); 
     }); 
    }); 
}); 

回答

2

你得到undefined,因爲你必須遍歷result.item而不是僅僅result。例如:

for(var key in result.item) { 
    console.log(result.item[key]['title']); 
} 

此外,你應該只使用普通for -loop而不是使用for..in,因爲它看起來像result.item只是一個簡單的數組。例如:

​​
+0

謝謝,這個工程很好。你能否詳細說明你最後的評論 - 簡單的循環看起來如何? – glog

+0

我已經添加了一個示例。 – mscdex