Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析JSON时,是什么导致此语法错误?_Javascript_Json - Fatal编程技术网

Javascript 解析JSON时,是什么导致此语法错误?

Javascript 解析JSON时,是什么导致此语法错误?,javascript,json,Javascript,Json,我有一个javascript字符串: var test = '{"test":"\\-"}' 当我尝试使用以下内容将其解析为JSON时: JSON.parse(test) 或与: $.parseJSON(test) 我得到一个类型为“意外的令牌号”的语法错误。 这表明“test”属性的值是用户可输入的字段。如何正确转义此字段?{“test”:“\-”}将被解释为JavaScript字符串,结果为{“test”:“\-”} 正如您在中所看到的,\-不是有效的转义序列(有效的是\”,\,\//

我有一个javascript字符串:

var test = '{"test":"\\-"}'
当我尝试使用以下内容将其解析为JSON时:

JSON.parse(test)
或与:

$.parseJSON(test)
我得到一个类型为“意外的令牌号”的语法错误。 这表明
“test”
属性的值是用户可输入的字段。如何正确转义此字段?

{“test”:“\-”}
将被解释为JavaScript字符串,结果为
{“test”:“\-”}

正如您在中所看到的,
\-
不是有效的转义序列(有效的是
\”
\
\//code>,
\b
\f
\n
\r
\t
\uxxx

也给出了误差

Parse error on line 2:
{    "test": "\-"}
-------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
如果您想在JSON中使用两个反斜杠,那么还必须在JavaScript字符串中对其进行转义,因此最终会使用

var test = '{"test": "\\\\-"}';
否则,省略它:

var test = '{"test": "-"}';

您希望test的值是什么?
\
是JavaScript中的转义字符。假设您正在尝试转义它,并且希望test的值是
\-
,这将起作用:

var test = '{"test":"\\\\-"}'

//Result: { test="\-"}
给你:

var test = '{"test":"\-"}'
JSON.parse(test)
这就是你想要的吗?想要:
{test:“-”}

其他方面:

var test = '{"test":"\\\\-"}'
JSON.parse(test)
有:
{test:\-“}


干杯

您的JSON如下所示:

{
    "test": "\-"
}
{
    "test": "\\-"
}
在字符串中,一个
\
字符
\
/
b
f
n
r
t
u???
,其中问号表示十六进制数字

您可能希望JSON看起来像这样:

{
    "test": "\-"
}
{
    "test": "\\-"
}
并且未能正确地将其转换为JavaScript字符串,但没有转义JavaScript的
\
字符

var test = '{"test":"\\\\-"}'

当我试图解析那个字符串时,我得到了“坏转义字符”

原因是您正在转义一个不需要转义的角色。字符串文本中的
\\
是一个转义反斜杠,因此字符串包含转义代码
\-
。破折号不需要转义,因此JSON解析器不允许转义代码

如果要在JSON中放入转义反斜杠,则必须将其转义为文字字符串:

var test = '{"test":"\\\\-"}'

我也面临着一些类似的问题,我首先刺痛了我的JSON,然后解析它。