如何从给定的字符串中获取JavaScript对象?

时间:2018-03-17 14:15:01

标签: javascript

如何从字符串中获取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方法?

4 个答案:

答案 0 :(得分:0)

JSON.parse来自商店的回复。 localStorage将所有内容存储为字符串,因此您需要首先对对象进行字符串化,因为我认为您这样做,否则您将无法将其保存到商店。

然后要检索它,你需要解析它以再次获取javascript对象。

答案 1 :(得分:0)

两件事:

  1. 使用JSON.parse()代替eval;它不仅更安全,而且更具描述性。注意:这需要对localStorage
  2. 中保存的数据使用JSON.stringify()
  3. 纠正拼写错误;你永远不会进入eval / parser块,因为你的length拼写为“lenght”
  4. 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,它将一个字符串作为参数,如果它是一个有效的对象字符串,则返回一个对象,否则会抛出错误