【问题标题】:Unwanted backslash in json when stored in localstorage存储在本地存储中时 json 中不需要的反斜杠
【发布时间】: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"))

标签: javascript html json local-storage


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 2017-05-16
      • 2012-08-30
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      相关资源
      最近更新 更多