Javascript 在localstorage中插入json时json格式错误
我在localStorage中插入了一个json,但当我试图解析它时,我在位置3处得到了json中的Javascript 在localstorage中插入json时json格式错误,javascript,json,Javascript,Json,我在localStorage中插入了一个json,但当我试图解析它时,我在位置3处得到了json中的意外标记~ 这就是我插入本地存储的方式 localStorage.setItem( "users", `"[\"~#iM\",[\"loading\",false,\"auth\"]]"` ); 但在本地存储中,我有 "["~#iM",["loading",false,"auth"]]" 做 JSON.parse("["~#iM",["loading",false,"a
意外标记~
这就是我插入本地存储的方式
localStorage.setItem(
"users",
`"[\"~#iM\",[\"loading\",false,\"auth\"]]"`
);
但在本地存储中,我有
"["~#iM",["loading",false,"auth"]]"
做
JSON.parse("["~#iM",["loading",false,"auth"]]")
不工作,但做
JSON.parse("[\"~#iM\",[\"loading\",false,\"auth\"]]")
确实有效
所以\
很重要。如何将它们保存在localStorage中?如果我理解正确,您希望从localStorage存储和检索对象,并且您可能已经知道,您只能在那里存储字符串
实现这一点的最简单方法可能是使用JSON.stringify将对象转换为字符串:
const someKey = 'whatever';
function saveToLocalStorage(obj) {
localStorage.setItem(someKey, JSON.stringify(obj));
}
function retrieveFromLocalStorage() {
return JSON.parse(localStorage.getItem(someKey));
}
let someArrayOrObjectToBeStored = [
"~#iM",
[
"loading",
false,
"auth"
]
];
saveToLocalStorage(someArrayOrObjectToBeStored);
let retrievedObject = retrieveFromLocalStorage();
console.log(retrievedObject)
PS:您编辑的示例不起作用,因为您引用了两次。移除外部背面标记,使其如下所示:
localStorage.setItem(
"users",
"[\"~#iM\",[\"loading\",false,\"auth\"]]"
);
去掉额外的引号或环绕外部的反勾号[]
localStorage.setItem(
"users",
`[\"~#iM\",[\"loading\",false,\"auth\"]]`
);
console.log(JSON.parse(localStorage.getItem( "users")))
这对我来说很有效,没有向后的斜线 控制台显示字符串值的方式让您感到困惑。请去掉外部[]
外的双引号。您已经有了反勾号将其表示为stringIt是一个简单的字符串。为什么需要使用JSON.parse()?@JossClassey显然要在appit中用作数组,但我们不应该使用\进行转义当使用反引号时,使用其他字符串分隔引号的全部目的是我们不需要转义。
localStorage.setItem(
"users",
`["~#iM",["loading",false,"auth"]]`
);
console.log(JSON.parse(localStorage.getItem("users")))