Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.js读取、解析和迭代JSON_Javascript_Json_Node.js - Fatal编程技术网

Javascript 使用Node.js读取、解析和迭代JSON

Javascript 使用Node.js读取、解析和迭代JSON,javascript,json,node.js,Javascript,Json,Node.js,我试图解析Reddit的RSS提要以获取头版文章的标题,但遇到了一些问题。源代码如下: //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/.

我试图解析Reddit的RSS提要以获取头版文章的标题,但遇到了一些问题。源代码如下:

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

您将获得未定义的
,因为您应该迭代
结果。项
,而不仅仅是
结果
。例如:

for(var key in result.item) {
  console.log(result.item[key]['title']);
}
var items = result.item;
for (var i = 0; i < items.length; ++i) {
  console.log(items[i].title);
}
此外,您应该只使用常规的
for
-循环,而不是使用
for..in
,因为它看起来像
结果。item
只是一个普通数组。例如:

for(var key in result.item) {
  console.log(result.item[key]['title']);
}
var items = result.item;
for (var i = 0; i < items.length; ++i) {
  console.log(items[i].title);
}
var items=result.item;
对于(变量i=0;i
谢谢,这很好用。你能详细解释一下你最后的评论吗?简单的for循环看起来怎么样?我已经添加了一个例子。