【问题标题】:How can I get a value from youtube api?如何从 youtube api 获取值?
【发布时间】:2019-02-28 21:45:00
【问题描述】:

我正在构建一个聊天机器人,它可以根据用户的要求检索 youtube 链接。 我将 Dialogflow 用于机器人并使用 nodejs 进行编码。

现在,一切正常,但我的问题是从 API 响应中检索链接。 使用 console.dir(results),显示如下: 响应如下所示:

[ { id: 'gWNUg_v25dw',
link: 'https://www.youtube.com/watch?v=gWNUg_v25dw',
kind: 'youtube#video',
publishedAt: '2017-08-24T14:00:11.000Z',
channelId: 'UCDZ56yQ05d_ikcwcTG9bAiA',
channelTitle: 'Code to Create',
title: 'How to make a Chatbot with Dialogflow - API.ai',
description: 'In this video, Google Developer Expert, Faisal Abid will show us how to create a chatbot with Google\'s latest API.ai API.ai can be integrated with multiple chat ...',
thumbnails: { default: [Object], medium: [Object], high: [Object] } } ]

我尝试使用 results.link 来检索链接,但我没有定义,所以我的问题是如何从响应块中检索链接?

search(txt1, opts, function(err, results) {
//var data1 = JSON.parse(results);
//srchRes = data1.link;
if(err) return console.log(err);


console.dir(results);
});

取消注释上面的 2 行,console.dir(srchRes) 返回此错误:

SyntaxError: Unexpected token u in JSON at position 0

【问题讨论】:

    标签: javascript node.js youtube-api dialogflow-es


    【解决方案1】:

    我们没有您的 API 调用代码逻辑,所以从这里开始,我们只能假设results 是 API 的响应,并给出您的示例响应的样子,然后我们看到 @ 987654325@ 是一个对象数组。

    • JSON.parse 实际上反序列化了一个字符串,该字符串表示给定 JSON 格式的对象。
    • JSON.stringify 则相反,它将您的对象序列化为 JSON 格式的字符串。

    您的目标是在数组访问特定对象的link属性,这就是JSON.parse(results)没有意义的原因。

    您应该能够通过简单地遍历对象数组results来访问每个对象的linkproperties@

    for (const result of results) {
        console.log(`the link : ${result.link}`)
    }
    

    【讨论】:

    • 使用它让我获得了正确的链接,我正在使用这个包npmjs.com/package/youtube-search,感谢您提供有关 JSON 格式的额外信息。
    • 很高兴有帮助,编码愉快
    猜你喜欢
    • 2020-12-08
    • 2017-05-29
    • 1970-01-01
    • 2016-08-09
    • 2015-07-21
    • 2021-01-09
    • 1970-01-01
    • 2022-07-04
    • 1970-01-01
    相关资源
    最近更新 更多