转义导致JSON验证失败的隐藏字符

时间:2011-01-21 19:06:43

标签: javascript

我有一个隐藏的角色导致JSON解析失败。什么是正确转义字符串的最佳方法只是像这样的隐藏字符使我的json崩溃了?

这是代码,不可见的字符在“大脑”中的n和s之间,直到你删除那个不可见的字符JSON.parse()将失败...问题是,如何剥离不可见的字符?

var mystring='{"invis":"their brains process differently"}';
console.log("cool" + mystring);
console.log(JSON.parse(mystring));

注意我发现在上面的代码中实际删除了不可见的字符,但是它就在这里,如果要复制并粘贴以查看问题: See the code on pastie

2 个答案:

答案 0 :(得分:2)

不知何故取消字符(0x18)进入你的字符串。您可以使用正则表达式替换它。

var mystring='{"invis":"their brains process differently"}';
mystring = mystring.replace( /\x18/g, "" );
console.log("cool" + mystring);
console.log(JSON.parse(mystring));

答案 1 :(得分:2)

我发现另一个JSON解析器没有与这些隐藏字符崩溃,它位于:

https://github.com/douglascrockford/JSON-js