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

时间:2017-04-26 17:52:39

标签: javascript json parsing escaping stringify

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

"key": "Z13g\u003d"

一旦我解析它,我得到:

"key": "Z13g="

有没有简单的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果你有像#34; \ u003d"在JavaScript中,它与其解析的字符串" ="无法区分。即使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"