【发布时间】:2011-10-30 17:38:59
【问题描述】:
我在解析通过 WebSocket 接收的 JSON 时遇到了一些麻烦(原始问题 - Parse JSON received with WebSocket results in error)。 JSON 字符串本身是有效的(使用多个 JSON 验证器测试),但 JSON.parse 会引发异常。我试图弄清楚它无法解析的究竟是什么,但我得到的唯一东西是“SyntaxError:unexpected_token ILLEGAL”,它没有说明失败令牌的确切位置在哪里。有没有办法提取这些信息?
更新:如果我将该 JSON 字符串复制粘贴到静态文件(例如“data.json”),然后检索它并使用相同的函数 (JSON.parse) 对其进行解析 - 然后它工作正常。 所以我假设发生了一些棘手的事情,我想到了换行符(可能是 \n 而不是 \r\n 或反之亦然),但完全删除所有换行符并没有帮助。我认为这很可能是编码问题,但数据是通过 websocket 接收的,根据文档,它是 utf-8 字符串。
第二次更新:如果我从这里使用“json_parse”就可以了:https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js 然后它工作正常!这是否意味着这是 Chrome 使用的“JSON.parse”实现中的错误或什么?
谢谢。
【问题讨论】:
-
试试jslint.org?如果不是“私人”数据,请在此处发布错误的 json。
-
比jslint更好的是jsonlint
-
返回“JSON: good.”,jsonlint 说它也是有效的。即使我将它从我的网页复制粘贴回 JSON.parse - 它也会解析字符串。请参阅“更新”。
-
我在从 Websockets 接收字符串时也遇到了这个问题。我的字符串就像
{"s":\"t\"}一样简单。删除反斜杠可以解决问题。谁能帮我解决这个问题?
标签: javascript parsing json