Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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.parse()方法中_Javascript_Json_Parsing_Escaping_Stringify - Fatal编程技术网

Javascript “如何避免解析”\&引用;在JSON.parse()方法中

Javascript “如何避免解析”\&引用;在JSON.parse()方法中,javascript,json,parsing,escaping,stringify,Javascript,Json,Parsing,Escaping,Stringify,我试图将JSON解析为JS对象,但有一个属性有问题,它在值中总是包含“\”字符和后面的四个字符。例如,字符串看起来像这样: "key": "Z13g\u003d" 解析后,我得到: "key": "Z13g=" 有什么简单的方法可以解决这个问题吗?如果在JavaScript中有一个类似“\u003d”的字符串,那么它与解析的字符串“=”是无法区分的。即使是String.replace函数也无法在字符串中找到\字符 但是,如果您确实试图表示包含反斜杠字符的字符串,则需要使用另一个反斜杠对其进行

我试图将JSON解析为JS对象,但有一个属性有问题,它在值中总是包含“\”字符和后面的四个字符。例如,字符串看起来像这样:

"key": "Z13g\u003d"
解析后,我得到:

"key": "Z13g="
有什么简单的方法可以解决这个问题吗?

如果在JavaScript中有一个类似“\u003d”的字符串,那么它与解析的字符串“=”是无法区分的。即使是
String.replace
函数也无法在字符串中找到
\
字符

但是,如果您确实试图表示包含反斜杠字符的字符串,则需要使用另一个反斜杠对其进行转义

鉴于
“\u003d”
表示字符串值
“=”
“\\u003d”
表示字符串值
“\u003d”

然而,当您调用
JSON.parse
时,事情会变得更加复杂;由于它再次解析字符串值,它将把
“\\u003d”
转换为
“=”

要解决这个问题,需要对反斜杠进行两次转义,因此字符串值为
“\\\\u003d”
。解析器将把它转换为
“\u003d”
,而不是
“=”

console.log(JSON.parse(“\”\u003d\”);//“\u003d”->”=”
console.log(JSON.parse(“\”\\u003d\”);//“\\u003d”->”=”
console.log(JSON.parse(“\”\\u003d\”);//“\\\\u003d”->“\u003d”
如果在JavaScript中有一个类似“\u003d”的字符串,那么它与解析的字符串“=”是无法区分的。即使是
String.replace
函数也无法在字符串中找到
\
字符

但是,如果您确实试图表示包含反斜杠字符的字符串,则需要使用另一个反斜杠对其进行转义

鉴于
“\u003d”
表示字符串值
“=”
“\\u003d”
表示字符串值
“\u003d”

然而,当您调用
JSON.parse
时,事情会变得更加复杂;由于它再次解析字符串值,它将把
“\\u003d”
转换为
“=”

要解决这个问题,需要对反斜杠进行两次转义,因此字符串值为
“\\\\u003d”
。解析器将把它转换为
“\u003d”
,而不是
“=”

console.log(JSON.parse(“\”\u003d\”);//“\u003d”->”=”
console.log(JSON.parse(“\”\\u003d\”);//“\\u003d”->”=”

console.log(JSON.parse(“\”\\u003d\”);//“\\\\u003d”->“\u003d”
为什么这首先是个问题
\u003d
是一种可以在JSON字符串中表示
=
的方法。也许您的问题是在创建JSON时未能转义斜杠?
\u003d
是在JSON中表示
=
字符的一种方法。解析器工作正常。@DanZawadzki-那么您首先生成的JSON不正确。您需要修复生成JSON的工具,而不是试图破解解析器来处理非真正JSON的数据格式。
\u003d
是一个字符,而不是6个字符。它像
\n
\t
…@DanZawadzki有什么证据表明
Z13g=
不是正确的键?听起来好像你认为没有问题就有问题
Z13g\u003d
将是一个特别奇怪的键。为什么这首先是一个问题
\u003d
是一种可以在JSON字符串中表示
=
的方法。也许您的问题是在创建JSON时未能转义斜杠?
\u003d
是在JSON中表示
=
字符的一种方法。解析器工作正常。@DanZawadzki-那么您首先生成的JSON不正确。您需要修复生成JSON的工具,而不是试图破解解析器来处理非真正JSON的数据格式。
\u003d
是一个字符,而不是6个字符。它像
\n
\t
…@DanZawadzki有什么证据表明
Z13g=
不是正确的键?听起来好像你认为没有问题就有问题
Z13g\u003d
将是一个特别奇怪的键。