使用angular在JSON.parse的位置0的JSON中出现意外的标记o

时间:2017-04-02 00:39:58

标签: angularjs json local-storage updating

我看过类似的线程,但没有成功。我想要做的是通过更新功能更新我的本地存储。功能如下:

使变量调用的代码:

var localProfile = JSON.parse(localStorage.getItem("profile"));

if(localProfile != undefined && localProfile.length>0)
{ this.profiles = localProfile; }

else {
    this.profile = [
        { id: "1526", name: "berserk",      password: "berserk",    age: "31",          gender: "male"},
        { id: "1358", name: "Johnathan",    password: "test",       age: "17",          gender: "male"},
        { id: "2539", name: "Britney",      password: "test",       age: "18",          gender: "female"},
        { id: "1486", name: "Kevin",        password: "test",       age: "7",           gender: "male"},
        { id: "7777", name: "jesus",        password: "holy",       age: "unknown",     gender: "male"},
        { id: "6666", name: "satan",        password: "hell",       age: "unknown",     gender: "unknown"}
    ];
}

更新变量的代码:

this.updateProfile = function(profile) {
    profile.updating = false;
    console.log(profile);
    localStorage.setItem("profile", profile);
}

正如我在标题中所提到的,我目前正在使用Angular。我使用了console.log( - 行,响应似乎正是它应该是的。我尝试过使用JSON.parse(JSON.stringify以及其他几种组合。我似乎在尝试重新加载页面时遇到上述错误或其他错误。显然,我要么无法执行该语句,要么最终破坏数据,因此重新加载页面会返回一个类似的错误。

如果变量配置文件中的数据存在疑问:

Array [ Object, Object, Object, Object, Object, Object ]

仔细观察数据时:

age:"17"
gender:"male"
id:"1358"
name:"johnathan"
password:"test"

另一个对象看起来完全相同,其中没有奇怪的默认值。我已经处理好了这个问题的$$ hashkey。

任何有关如何正确执行呼叫的帮助都是非常重要的,如果信息不足,请告诉我们。

1 个答案:

答案 0 :(得分:2)

问题是您在保存数据时没有使用JSON.stringify。所以当你从localStorage解析时它不是json。

添加要在处理JSON.parse()JSON.stringify()

的应用程序中使用的工厂
.factory('LocalStorageUtil', function() {
  return {
    get: get,
    set: set,
    remove: remove
  }

  function get(key) {
    return JSON.parse(localStorage.getItem(key));
  }

  function set(key, val) {
    localStorage.setItem(key, JSON.stringify(val));
  } 

  function remove(key) {
    return localStorage.removeItem(key);
  }
})

这是一个使用此LocalStorageUtil的JS Bin微型示例应用程序。

http://jsbin.com/fijagiy/2/edit?js,output