JSON.stringify不以正确的格式提供数据

时间:2017-07-29 10:36:50

标签: json node.js

我的代码如下所示:

var WebSocket = require('ws'),
    ws = new WebSocket('wss://api.gemini.com/v1/marketdata/BTCUSD');


const getMarketUpdates = (req, res) => {
    ws.on('message', function(message) {
        console.log('received: %s', message);
        res.json({
            data: JSON.stringify(message.message)
        })
    });
}

我得到的输出如下所示:

{
    "data": "\"{\\\"type\\\":\\\"update\\\",\\\"eventId\\\":1131320868,\\\"timestamp\\\":1501324222,\\\"timestampms\\\":1501324222132,\\\"events\\\":[{\\\"type\\\":\\\"change\\\",\\\"side\\\":\\\"bid\\\",\\\"price\\\":\\\"2702.14\\\",\\\"remaining\\\":\\\"0\\\",\\\"delta\\\":\\\"-0.12\\\",\\\"reason\\\":\\\"cancel\\\"}]}\""
}

现在我该怎样做才能使输出看起来干净?

1 个答案:

答案 0 :(得分:4)

JSON.stringify is not broken。您使用JSON.stringifydata提供字符串值,并将包含data的对象传递到res.json,然后获取该对象并对其进行编码,从而对数据进行双重编码它是JSON。

如果您希望data成为消息,请不要使用JSON.stringify并让res.json执行此操作:

res.json({
    data: message.message
})