节点JS请求以字符串形式返回

时间:2018-08-21 00:39:02

标签: javascript node.js request

我正在使用node和请求包向api发送请求。我正在尝试分解正文,但是我注意到请求的正文以字符串形式返回。我不确定为什么要考虑在项目的其他地方使用此api,并且一切正常。关于为什么可能会发生或如何处理的任何想法(假设这不是api特有的问题)?

如果有帮助,我正在使用IEX API获取股票数据...

这是我的代码:

request('https://api.iextrading.com/1.0/tops/last?symbols=SNAP', (err, res, body) => {
    if(err) {
        return console.error(err);
    }
    const stockMoment = new StockMoment({
        symbol: body.symbol,
        price: body.price,
        time: body.time,
    });
    stockMoment.save((err) => {
        if(err) return handleError(err);
        console.log('Saved!');
    });
    console.log(typeof body); // Tells me it's a string
});

1 个答案:

答案 0 :(得分:2)

我的理解是,您需要提供一个附加的json参数request(),以便将响应从JSON字符串自动解析为等效的JSON对象。

类似这样的事情应该可以解决:

request({
    url : 'https://api.iextrading.com/1.0/tops/last?symbols=SNAP',
    // [ADD] parameter json : true
    json : true 

}, (err, res, body) => {
    if(err) {
        return console.error(err);
    }
    const stockMoment = new StockMoment({
        symbol: body.symbol,
        price: body.price,
        time: body.time,
    });
    stockMoment.save((err) => {
        if(err) return handleError(err);
        console.log('Saved!');
    });
    console.log(typeof body); // Tells me it's a string
});