在您的情况下,存储在存储器中的值是一个字符串(inputext:string)。如果您试图按原样分析字符串,json.parse将抛出错误。在此处查看更多信息:
Why does JSON.parse("string") fail
现在,根据您的代码,您根本不需要json.parse:
loadUser() {
// Or to get a key/value pair
this.storage.get(this.key).then(val => {
this.inputtextGroup = val;
console.log('You name is', val);
});
}
}
但如果你说你的数据输入最终可能是其他东西。然后,您可以使用Try-Catch对其进行一些条件调整:
loadUser() {
// Or to get a key/value pair
this.storage.get(this.key).then(val => {
try {
JSON.parse(val);
} catch(e) {
// do here what you need since its a string
}
// do here what you need with parsed data
});
}
}
现在,如果需要在应用程序中一次存储多个名称。您可以使用以下几种“策略”:
-
根据“键”区分存储的数据。因此,密钥(在用于将数据保存到存储中的密钥/值对中)应该表示唯一的用户,当然,需要跟踪这些用户才能检索这些用户:
users = ["userUniqueName1", "userUniqueName2", etc]
...
this.storage.get(users[1]).then(()=>{...})
-
将数据存储在对象中,并在存储之前将其串接:
users = [
{ name: "userUniqueName1", surname: "whatever" },
{ name: "userUniqueName2", surname: "whatever" },
...
]
现在,在存储对象(数组)之前,需要对其进行字符串化:
storeUsers() {
let usersStringifiedObj = JSON.stringify(this.users);
this.storage.set("users", usersStringifiedObj);
}
retrieveUsers() {
this.storage.get("users").then( users => {
this.users = JSON.parse(users);
})
}