JSON.parse()方法中如何避免解析“\”

How to avoid parsing "\" in JSON.parse () method

我正在尝试将 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"