我正在使用node.js通过TCP检索一些字符串化的JSON,并希望解析它。所以我的方法类似于这个。我已经缩短和简化了它,所以您不必了解周围的逻辑。
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)
所以我想:“JSON字符串可能有什么问题。让我们直接尝试一下,不应该起作用。” 惊喜!它起作用了。为什么直接输入字符串可以工作?
data
是一个字符串还是已经解析的对象(或其他内容)? - Felix Klingdata.toString().charCodeAt(0)
是什么? - Matthew Flaschen