npm请求在执行body时没有得到json响应。{object}

时间:2015-03-29 19:03:13

标签: json node.js request

所以我正在请求使用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(正文)时,它会让我回复打印到屏幕上的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)

除了空白屏幕外什么都没有。

如何打印出自我网址?

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:6)

这个问题有点旧,但以下似乎也更有帮助。在请求中,您可以传递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) {