如何使用nodejs访问格式为“ key:key”:“ value”的Json数据?

时间:2019-11-25 04:45:15

标签: node.js json

我有以下json数据:

"items": [
{
"creator": "John doe",
"title": "Third blog story",
"link": "https://medium.com/@doe115237/third-blog-story-35916b5666be?source=rss-af5ade1fb984------2",
"pubDate": "Tue, 19 Nov 2019 11:18:44 GMT",
"content:encoded": "<p>Nothing but stupid Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic consectetur laboriosam atque recusandae quis unde fuga, voluptate neque tempore enim.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/0*iIJoKQM1yHyjbJz3\" /><figcaption>Photo by <a href=\"https://unsplash.com/@emilep?utm_source=medium&amp;utm_medium=referral\">Émile Perron</a> on <a href=\"https://unsplash.com?utm_source=medium&amp;utm_medium=referral\">Unsplash</a></figcaption></figure><p>Nothing else, sorry to waste your time!</p><img src=\"https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=35916b5666be\" width=\"1\" height=\"1\">",
"dc:creator": "John doe",
"guid": "https://medium.com/p/35916b5666be",
"isoDate": "2019-11-19T11:18:44.000Z"
},
{
"creator": "John doe",
"title": "Second blog post for testing…",
"link": "https://medium.com/@doe115237/second-blog-post-for-testing-2f653732d55a?source=rss-af5ade1fb984------2",
"pubDate": "Tue, 19 Nov 2019 08:50:49 GMT",
"content:encoded": "<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*1MgMV1m4btqGv3SKf1IlAQ.jpeg\" /><figcaption>dummy image</figcaption></figure><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?</p><img src=\"https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2f653732d55a\" width=\"1\" height=\"1\">",
"dc:creator": "John doe",
"guid": "https://medium.com/p/2f653732d55a",
"isoDate": "2019-11-19T08:50:49.000Z"
},
{
"creator": "John doe",
"title": "My first Blog Post",
"link": "https://medium.com/@doe115237/my-first-blog-post-a4578c1bbd22?source=rss-af5ade1fb984------2",
"pubDate": "Tue, 19 Nov 2019 06:26:15 GMT",
"content:encoded": "<p>This is just a test there is nothing to write much blah blah, Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/720/1*U6dddRQivNYculO11zw2hQ.png\" /><figcaption>Image 1 for test</figcaption></figure><p><strong>Sub heading 1:</strong></p><p>there is nothing to write much blah blah, Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?</p><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nobis velit iure debitis voluptatem ducimus nihil laudantium! Doloremque distinctio at inventore?</p><iframe src=\"\" width=\"0\" height=\"0\" frameborder=\"0\" scrolling=\"no\"><a href=\"https://medium.com/media/6ca0850549010007ed8c37dec98cf6e9/href\">https://medium.com/media/6ca0850549010007ed8c37dec98cf6e9/href</a></iframe><p>some more code down below:</p><pre>&lt;footer class=”footer text-center py-4&quot;&gt;</pre><pre>&lt;small class=”copyright”&gt;Template Copyright &amp;copy; &lt;a href=”https://themes.3rdwavemedia.com/&quot; target=”_blank”&gt;3rd Wave Media&lt;/a&gt;&lt;/small&gt;</pre><pre>&lt;/footer&gt;</pre><p>another block of code:</p><iframe src=\"\" width=\"0\" height=\"0\" frameborder=\"0\" scrolling=\"no\"><a href=\"https://medium.com/media/ef63bfa9744d1a5e1e6699f4e00c75c8/href\">https://medium.com/media/ef63bfa9744d1a5e1e6699f4e00c75c8/href</a></iframe><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*ySQhL7GRAboQU7xHtjYm4A.jpeg\" /></figure><img src=\"https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a4578c1bbd22\" width=\"1\" height=\"1\">",
"dc:creator": "John doe",
"guid": "https://medium.com/p/a4578c1bbd22",
"isoDate": "2019-11-19T06:26:15.000Z"
}
],

在这里,我想访问nodejs中的content:encoded

app.get('/api/blog', (req, res, next) => {
  (async () => {

    let feed = await parser.parseURL('https://medium.com/feed/@doe115237');
    console.log(feed.title);
    feed.items.forEach(item => {
      console.log(item.title + ':' + item.content:encoded)
    });

  })();

});

但是上面的代码给出了一个错误,因为我不能使用item.content:encoded,所以知道如何解决这个问题吗?

这是错误消息:

console.log(item.title + ':' + item.content:encoded)
                                          ^^^^^^^ 
     SyntaxError: missing ) after argument list
            at new Script (vm.js:80:7)
            at createScript (vm.js:274:10)
            at Object.runInThisContext (vm.js:326:10)
            at Module._compile (internal/modules/cjs/loader.js:664:28)
            at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
            at Module.load (internal/modules/cjs/loader.js:600:32)
            at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
            at Function.Module._load (internal/modules/cjs/loader.js:531:3)
            at Module.require (internal/modules/cjs/loader.js:637:17)
            at require (internal/modules/cjs/helpers.js:22:18)
  

在这里,我正在使用rss-parser包来转换媒体   博客的rss提要json数据

1 个答案:

答案 0 :(得分:1)

不需要IIFE,以其他方式访问奇数密钥,删除中断位并重新发送。

因此基本上删除了几行:

app.get('/api/blog', async(req, res, next) => {
  let feed = await parser.parseURL('https://medium.com/feed/@doe115237');
  feed.items.forEach(item => {
    console.log(item.title + ':' + item['content:encoded'])
  });

  res.send(); // dont leave express hanging
});