我正在尝试将JSON解析为JS对象,但我遇到一个属性的问题,其值总是包含“\”字符和后面的四个字符。例如。字符串看起来像这样:
"key": "Z13g\u003d"
一旦我解析它,我得到:
"key": "Z13g="
有没有简单的方法可以解决这个问题?
答案 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"