如何从字符串中获取Object?
我编写了一个localStorage工具,其中包含df.to_csv('drive/path/file.csv',index = False)
和get
方法。
在set方法中:
set
您可以忽略function fnGet(name){
var getVal=storage.getItem(name);
if(getVal==null){
return console.log('the localstorage did\'t have'+name);
}
if((getVal.split(':-:')).lenght>1){
return eval('('+getVal.split(':-:')[0]+')');
}
return getVal.split(':-:')[0];
}
,它是已保存数据和时间戳的分隔符。
如果数据存储在JavaScript对象中,则存在问题,例如:
:-:
当我使用get方法时,它会变成这样:
'{"pk":1,"username":"test01","email":"","first_name":"","last_name":""}:-:1521381469910'
如何访问JavaScript对象?
如何优化我的get方法?
答案 0 :(得分:0)
JSON.parse
来自商店的回复。 localStorage将所有内容存储为字符串,因此您需要首先对对象进行字符串化,因为我认为您这样做,否则您将无法将其保存到商店。
然后要检索它,你需要解析它以再次获取javascript对象。
答案 1 :(得分:0)
两件事:
JSON.parse()
代替eval
;它不仅更安全,而且更具描述性。注意:这需要对localStorage JSON.stringify()
length
拼写为“lenght”
function fnGet(name) {
let getVal = storage.getItem(name)
if (getVal == null) {
return console.log(`the localstorage did't have: ${name}`);
}
let val = getVal.split(':-:'); // for performance cache the split
if (val.length > 1) { // Spelling error: "lenght" -> length
return JSON.parse(val[0]);
}
return val[0];
}
答案 2 :(得分:-1)
LocalStorage保存字符串化的数据。因此,您应该使用JSON.parse(yourVariable)
将数据作为JSON
答案 3 :(得分:-1)
function fnGet(name) {
var getVal = storage.getItem(name);
if (getVal == null) {
return console.log('the localstorage did\'t have' + name);
}
if ((getVal.split(':-:')).lenght > 1) {
return eval('(' + JSON.parse(getVal.split(':-:')[0]) + ')');
}
return getVal.split(':-:')[0];
}
你需要的只是JSON.parse,它将一个字符串作为参数,如果它是一个有效的对象字符串,则返回一个对象,否则会抛出错误