【问题标题】:npm request not getting json response when doing body.{object}npm 请求在做 body.{object} 时没有得到 json 响应
【发布时间】:2015-06-02 17:14:48
【问题描述】:

所以我请求 twitch 使用 npm 响应获取一些流媒体数据。

var express = require('express');
var router = express.Router();
var request = require('request');

/* GET users listing. */
router.get('/streams/:user', function(req, res, next) {

    request('https://api.twitch.tv/kraken/streams/' + req.params.user, function ( error, response, body) {
        if (!error && response.statusCode == 200)
        {
            res.send(body);
        } 
        else 
        {
            res.send(404);
        }
    });
});

module.exports = router;

当我执行 res.send(body) 时,它会将我的 json 对象很好地打印到屏幕上。

{"_links":{"self":"https://api.twitch.tv/kraken/streams/allencoded","channel":"https://api.twitch.tv/kraken/channels/allencoded"},"stream":null}

所以我不想拿回所有这些,而只是获取自我网址。 然后我想我会做类似的事情:

res.send(body._links.self)

只返回一个空白屏幕。

如何只打印出自己的网址?

【问题讨论】:

    标签: json node.js request


    【解决方案1】:

    这个问题有点老了,但是,以下似乎也更有帮助。在请求中,您可以传递json: true,请求库将返回json对象。

    替换下一行,

    request('https://api.twitch.tv/kraken/streams/' + req.params.user, function ( error, response, body) {
    

    下面那个

    request({'url':`https://api.twitch.tv/kraken/streams/${req.params.user}`, 'json': true }, function ( error, response, body) {
    

    【讨论】:

    • 按预期工作。谢谢
    【解决方案2】:

    body 是一个字符串。您必须先将其解析为 JSON:

    res.json(JSON.parse(body)._links.self);
    

    【讨论】:

    • 我只是通过执行 var obj = JSON.parse(body); res.send(obj._links);
    • 无法请求 JSON 而不是转换?躺在下面的答案,我猜它应该具有更好的性能
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2019-09-10
    • 1970-01-01
    • 2014-01-12
    • 2017-04-04
    • 2016-12-23
    相关资源
    最近更新 更多