繁体   English   中英

JSON.parse()和$ .parseJSON()中的“未捕获的SyntaxError:意外的令牌?”

[英]“Uncaught SyntaxError: Unexpected token ?” in both JSON.parse() and $.parseJSON()

我不知道为什么要得到这个,我花了整整一天的时间试图弄乱代码。 现在,我能得到的最简单的方法是(尝试使用来自数据库的转义字符串构建JavaScript数组):

vat test = '["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]';

到现在为止还挺好。

然后这会中断并返回错误:

JSON.parse(test);

给出一个想法,原始的2个数组项是:

<script>var bob = "This is ok"</script>
<script>search.replace(/!|\?)/g, "")</script>

除了现在,由于我CMS中用户输入的行中的问号,所有输入数据库的所有代码都一直有效。 如果我删除它或将问号替换为其他任何东西,它将起作用。

我不能更改正则表达式,以便使其以任何其他方式起作用,我不是输入此正则表达式的人。 加上这是整个脚本的简化版本,我只是将其缩小为问号。

如果问号对json有特殊含义,我什么也没找到。

我希望我可以发送一个小提琴而不只是代码,但是jsfiddle不允许我在javascript窗口中添加标签。

JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]')
SyntaxError: Unexpected token ?

这里有两种unescape,所以在?之前需要额外的\\ ?

JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\\?)/g, \\"\\")</script>"]')
["<script>var bob = "This is ok"</script>", "<script>search.replace(/!|\?)/g, "")</script>"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM