为什么JSON.stringify存入localStorage的内容打印时会出现反斜杠
反斜杠出现的根本原因
localStorage 仅支持存储字符串类型数据,你使用JSON.stringify()序列化对象得到的原本是正常JSON字符串:{"name":"Bob","age":50}。
你看到的反斜杠并不是实际存储在localStorage中的内容,只是控制台打印整个Storage对象时的转义展示规则:控制台为了区分字符串外层的边界双引号,和字符串内部的JSON属性双引号,会自动给内部的双引号添加转义反斜杠,属于控制台的展示行为,和实际存储的内容无关。
你可以单独执行console.log(localStorage.getItem("myObj"))验证,打印出来的内容不会携带多余反斜杠。
正确的处理方式
你的现有代码完全符合localStorage操作的标准规范,不需要额外修改,也不需要专门做反斜杠移除处理,规避这个展示问题的注意事项如下:
- 校验存储内容不要直接打印整个localStorage对象,改用
localStorage.getItem("目标键名")单独打印对应键的值,即可看到真实存储内容 - 读取存储的对象数据时,直接用
JSON.parse(localStorage.getItem("myObj"))反序列化即可,JS内置的解析逻辑会自动处理转义逻辑,完全不会受控制台展示的转义符影响 - 不要手动编写移除反斜杠的逻辑,否则如果你的存储内容本身就包含合法的反斜杠字符,会被误删导致内容损坏
内容的提问来源于stack exchange,提问作者Zalokin
相关产品推荐
相关产品推荐

