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-文字列で間違っている可能性が何のは、直接それを試してみましょう働くべきではありません」サプライズ、サプライズ!出来た。文字列を直接入力すると、なぜ機能しますか?
実際に簡略化された簡略化されたコードを実行しましたか? –
ありがとう、私はこれを掘り下げます。 – buschtoens
多分、ストリームに奇妙な制御文字が含まれているかもしれません... 'data'は文字列か、すでに解析されたオブジェクト(または何か他のもの)ですか? –