我在 javascript 中有一个字符串:
var test = '{"test":"\\-"}'
当我尝试使用以下内容将其解析为 JSON 时:
JSON.parse(test)
或与:
$.parseJSON(test)
我收到类型为“unexpected_token_number”的 SyntaxError。
"test"
属性的值是用户可输入的字段。我应该如何正确地逃避这个领域?
最佳答案
'{"test":"\\-"}'
将被解释为 JavaScript 字符串,结果为 {"test":"\-"}
。
您可以在these diagrams中看到,\-
不是有效的逃生序列(有效为\"
,\\
,\/
,\b
JSONLint 也给出错误
Parse error on line 2:
{ "test": "\-"}
-------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
如果你想在 JSON 中使用两个反斜杠,你也必须在 JavaScript 字符串中对它们进行转义,所以你最终会得到 p>
var test = '{"test": "\\\\-"}';
否则,忽略它:
var test = '{"test": "-"}';
关于javascript - 解析 JSON 时出现此语法错误的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717549/