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