使用localStorage存储JSON对象的问题

  1. 对于不是 json 对象的数据存储:
var arr=[1,2,3];
localStorage.setItem("tmp",arr);                     //会返回1,2,3
console.log(typeof localStorage.getItem("tmp"));     //string
console.log(localStorage.getItem("tmp"));            //1,2,3

localStorage.setItem() 可以将其直接转化为字符串进行存储。

  1. 而 localStorage.setItem() 不会自动将 json 对象转成字符串形式
var user= {"username": "Guofq","phone": 18518517430};
console.log(typeof localStorage.getItem("user"));   //也会返回String
localStorage.setItem("user", user);                 //但是返回[object Object]

用localStorage.setItem()正确存储JSON对象方法是:
存储前,先用JSON.stringify()方法将json对象转换成字符串形式;
JSON.stringify() 方法可以将任意的 JavaScript 值序列化成 JSON 字符串。

var user= {"username": "Guofq","phone": 18518517430};
user = JSON.stringify(user);                       //转化为JSON字符串
localStorage.setItem("user", user);                //返回 {"username": "Guofq","phone": 18518517430}

后续要操作该JSON对象,要将之前存储的JSON字符串先转成JSON对象再进行操作。

username=JSON.parse(localStorage.getItem("user")).username;
phone=JSON.parse(localStorage.getItem("user")).phone;

你可能感兴趣的:(使用localStorage存储JSON对象的问题)