存储在本地存储中时 json 中不需要的反斜杠

Posted

技术标签:

【中文标题】存储在本地存储中时 json 中不需要的反斜杠【英文标题】:Unwanted backslash in json when stored in localstorage 【发布时间】:2014-01-31 13:06:00 【问题描述】:

我首先将json 存储在localstorage 中,然后再次将其存储在最终json 中,但我在最终json 中获得了额外的backslash。我的代码是:

<!DOCTYPE html>
<html>
<body>

 <script>

    var mi = [
       "name": "Alex",
       "address": "abc"
       ,
       
        "name": "George",
       "address": "efg"
      
      ]

    localStorage.setItem("myData", JSON.stringify(mi))

    var FinalJson = 
             "Collected values" : localStorage.getItem("myData"),
             "Place" : "washington"
            ;
    document.write(JSON.stringify(FinalJson));
   </script>

</body>
</html>

我得到的输出是:

     "Collected values":"[\"name\":\"Alex\",\"address\":\"abc\" \"name\":\"George\",\"address\":\"efg\"]","Place":"washington"

我哪里错了,我得到了这个额外的backslash。如何删除多余的backslashes?附言我不想将变量mi 直接存储在我的FinalJson 中,因为它包含一些更复杂的值,为了简单起见,我在此处删除了这些值。

【问题讨论】:

它只是转义字符串,尝试解析数据并查看它是否自行解析,因为您可能不打算将 JSON 作为字符串扔到页面上? 哦,它是双重字符串化的,做"Collected values" : JSON.parse(localStorage.getItem("myData")) 【参考方案1】:

它被字符串化了两次

var FinalJson = 
     "Collected values" : JSON.parse(localStorage.getItem("myData")),
     "Place" : "washington"
;

http://jsfiddle.net/Kh5Br/

【讨论】:

【参考方案2】:
var mi = [
     "name": "Alex",
     "address": "abc"
   ,
   
     "name": "George",
     "address": "efg"
   
];

localStorage.setItem("myData", JSON.stringify(mi))

var tes = JSON.parse(localStorage.getItem("myData")); //It was "work". I thougt you missed that

var FinalJson = 
         "Collected values" : tes,
         "Place" : "washington"
        ;
document.write(JSON.stringify(FinalJson));
document.write(tes);

【讨论】:

以上是关于存储在本地存储中时 json 中不需要的反斜杠的主要内容,如果未能解决你的问题,请参考以下文章

本地 json 对象在 Typahead Bloodhound 中不起作用

将 url 留在 Angular 中时从本地存储中删除值

JS去除字符串众的反斜杠

H5笔记——locaStorage和sessionStorage本地存储的一些坑

本地存储和 JSON

在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\”