我在解析WebSocket收到的JSON时遇到了一些麻烦(原始问题-Parse JSON received with WebSocket results in error)。 JSON字符串本身是有效的(已使用多个JSON验证器进行了测试),但是JSON.parse引发异常。我试图弄清楚它无法解析的确切含义是什么,但是我唯一得到的是“SyntaxError:unknown_token ILLEGAL”,它没有说失败 token 的确切位置在哪里。有什么方法可以提取此类信息?

更新:如果我将该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”实现中的错误,还是什么?

谢谢你。

最佳答案

您可以从某个地方(例如从jQuery中)复制JSON.parse()的实现,更改其名称,以便可以直接调用它,对实现进行调整,以使其从不检测内置解析器,因此始终使用JS解析器然后将您的代码更改为使用新的JS版本的解析器,然后在javascript调试器中对其进行跟踪,直到找到不满意的内容为止。

关于告知错误位置的JavaScript JSON解析器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7123908/

10-12 13:03
查看更多