Javascript 在localstorage中插入json时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中插入了一个json,但当我试图解析它时,我在位置3处得到了json中的
意外标记~

这就是我插入本地存储的方式

  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")))