我想通過node.js中的TCP檢索一些字符串化的JSON,並且想要解析它。所以我的方法與此相似。我縮短並簡化它,所以你不必知道周圍的邏輯。node.js中的奇怪的JSON.parse()錯誤
socket.on("data", function(data) {
console.log(data.toString()); // Shows the original stringifyed version
console.log(JSON.parse(data.toString())); // Doesn't work
});
完整的(美化)JSON是這樣的。正如你所看到的,沒有錯誤。
{
"result": "success",
"source": "chat",
"success": {
"message": "test",
"time": 1331770513,
"player": "silvinci"
}
}
但JSON.parse(data.toString())
總是拋出我這個愚蠢的錯誤:
{"result":"success","source":"console","success":{"time":1331762264,"line":"20
^
SyntaxError: Unexpected token {
at Object.parse (native)
at Socket.<anonymous> (/home/node/api.js:152:35) // irrelevant from here on
at Socket.emit (events.js:67:17)
at TCP.onread (net.js:347:14)
所以我thougt:「怎麼可能是錯的JSON字符串讓我們試它一試不應該工作。」驚喜,驚喜!有效。爲什麼直接輸入字符串時會起作用?
您是否真的運行了縮短和簡化的代碼? – 2012-03-15 01:40:02
謝謝,我會深入研究這一點。 – buschtoens 2012-03-15 01:40:49
也許這個流包含一些奇怪的控制字符...... data是一個字符串還是已經解析過的對象(或別的東西)? – 2012-03-15 01:40:56