存储在本地存储中时 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 中不起作用