我在Google快讯中创建了一个提醒,需要解析XML。我正在使用feed-reader
模块,我的代码如下:
app.get('/', (req, res) => {
parse(url).then((rss) => {
let title,
link,
publishedDate,
contentSnippet = '';
let json = {};
rss['entries'].forEach((item) => {
title = item.title;
link = item.link.substring(42, item.link.indexOf('&ct='));
publishedDate = item.publishedDate;
contentSnippet = item.contentSnippet;
});
json = {
title,
link,
publishedDate,
contentSnippet
};
res.send(beautify(json, null, 2, 100));
}).catch((err) => {
res.send(err);
});
});
我想循环遍历"entries"
键内的内容。虽然它有效但结果只是最后一个。
此外,如果我将json
变量移动到循环内部,则返回的结果为[object Object]
,但长度合适。
我尝试JSON.stringify
,没有区别。
答案 0 :(得分:1)
此表达式将最后一个entrie的值分配给变量:
rss['entries'].forEach((item) => {
title = item.title;
link = item.link.substring(42, item.link.indexOf('&ct='));
publishedDate = item.publishedDate;
contentSnippet = item.contentSnippet;
});
然后从最后的值创建json
。
而是将Array#map
条目转换为新数组。每次迭代都应该返回一个对象。
const arr = rss['entries'].map(({ title, link, publishedDate, contentSnippet }) => ({
title,
link: link.substring(42, link.indexOf('&ct=')),
publishedDate,
contentSnippet
}));