JavaScript中如何在JSON对象值中使用单个反斜杠
如何在JSON对象属性值中保留单个反斜杠?
先看你的代码场景:
var text = 'jeep\\sand'; console.log(text) // 返回 jeep\sand
这里text实际存储的就是带单个反斜杠的字符串,console.log(text)的输出已经证明了这一点。
但当把它放进对象后打印:
let js = { "key" : text } console.log(js) // 返回 {key:"jeep\\sand"}
你期望输出{key:"jeep\sand"},这里要搞清楚两个核心点:
为什么显示双反斜杠?
浏览器或Node.js在打印对象时,会展示字符串的内部转义表示,并非实际存储了双反斜杠——对象里的key值依然是单个反斜杠的字符串,只是打印对象时的格式化逻辑会把反斜杠转义后显示。怎么得到期望的输出格式?
如果你只是想在控制台看到{key:"jeep\sand"}这种视觉效果,可以手动拼接字符串输出:var text = 'jeep\\sand'; let js = { "key" : text }; console.log(`{key:"${text}"}`); // 输出 {key:"jeep\sand"}注意:严格的JSON语法要求字符串中的反斜杠必须转义(即双反斜杠),所以
{key:"jeep\sand"}其实是不符合标准JSON规范的。如果你的需求是生成合法的JSON,那么双反斜杠是必须的,当你后续解析这个JSON时,会自动还原成单个反斜杠的字符串。
内容的提问来源于stack exchange,提问作者Johnson Anthony
相关产品推荐
相关产品推荐

