2017-07-29 76 views
-1

我的代碼如下所示:JSON.stringify不正確的格式給數據

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\\\"}]}\"" 
} 

現在我該怎麼辦使輸出看起來乾淨?

+0

我回滾您的編輯。在SO上,你不允許編輯這個問題,從而使現有答案失效。但是,如果編輯的第二部分(最後引用的輸出)是您用原始代碼獲得的結果(這是我所期望的),那麼編輯* that部分就可以了。 –

回答

4

JSON.stringify is not broken。通過使用JSON.stringifydata提供一個字符串值,並將包含data的對象傳遞給res.json(該對象接受該對象並將其編碼爲JSON),即可對數據進行雙重編碼。

如果你想data是消息,只是不使用JSON.stringify,讓res.json做到這一點:

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

我按照你所說的做了,但它給了我輸出'{}'。這就是爲什麼我只用res.josn用'message'寫的。請參閱我更新的問題 –

+0

@MrugeshThaker:如果'message.message'包含您所顯示的內容,則上面的絕對不會輸出'{}'。 (編輯:只需在本地證明,以確保安全。:-)) –