parsing不正常形成的JSONstring

我正从第三方发送一个不正常的JSONstring。 我尝试使用JSON.parse(str)来parsing它到一个JavaScript对象,但它当然失败了。

原因是钥匙不是string:

 {min: 100} 

与有效的JSONstring(parsing得很好)相反:

 {"min": 100} 

现在我需要接受形成不良的string。 我想象忘记正确引用键是一个常见的错误。 有没有一种好的方法来改变这个有效的JSONstring,以便我可以parsing它? 现在我可能不得不逐字分析字符,试着形成一个听起来很糟糕的对象。

想法?

你可以只是评估,但如果你不信任源代码,这将是不好的安全做法。 更好的解决scheme是手动修改string来引用键或者使用别人写的工具来为你做这件事(检查daepark写的https://github.com/daepark/JSOL)。

我刚刚做了这个,使用Uglifyjs来评估:

 var jsp = require("uglify-js").parser; var pro = require("uglify-js").uglify; var orig_code = "var myobject = " + badJSONobject; var ast = jsp.parse(orig_code); // parse code and get the initial AST var final_code = pro.gen_code(ast); // regenerate code $('head').append('<script>' + final_code + '; console.log(JSON.stringify(myobject));</script>'); 

这是一个很渺茫的方式,并具有与基于eval()的解决scheme相同的问题,但如果你只需要parsing/重新格式化数据一次,那么上述应该得到一个干净的JS对象的JSON副本。

根据JSON中的其他内容,您可以简单地进行stringreplace,并用'{'replace'{''{"''":'