需要限制较少的json解析器

时间:2013-02-04 12:20:19

标签: javascript jquery json knockout.js

我需要将格式化为json的不同字符串传递给json解析器。

问题是jQuery.parseJSON()和JSON.parse()仅支持非常严格的json格式:

  

传入格式错误的JSON字符串可能会导致抛出异常。例如,以下是所有格式错误的JSON字符串:

     

{test:1}(测试周围没有双引号)。

     

{'test':1}('test'使用单引号而不是双引号)。

是否有一个限制较少的解析器允许传递这样的值(没有引号或单引号)?

顺便说一句,我正在使用KO 2.2.1,所以如果它有类似的东西,它会有所帮助。

2 个答案:

答案 0 :(得分:1)

没有不那么严格的JSON解析器。你要么处理结构良好的JSON,要么根本就没有处理JSON。要解析自定义格式,您可能需要查看Crockford's parser源代码,并根据需要对其进行修改。

或者,对于快速而肮脏的解决方案,您可以使用eval(但请注意its use has security implications)。

答案 1 :(得分:0)

有一个名为jsonic的节点模块解析非严格的JSON。

npm install jsonic


您也可以使用eval:

var parsed = eval(json)

要小心,因为eval也可以运行代码,因此您必须确保知道要解析的内容。