如何访问json数据os asyncStorage函数

时间:2019-01-23 15:27:30

标签: javascript react-native

我正在使用AsyncStorage来存储数据。这是我存储数据的功能:

const profile = { userId, name, email  };

         await AsyncStorage.setItem('userProf', JSON.stringify(profile));

如果我访问console.log,尝试访问数据时出现问题:

  async componentWillMount(){
     const profile = await AsyncStorage.getItem('userProf');

     console.log(profile);
   }
  

{“ userId”:“ jefla3E0tjcJHhHKJK45QoIinB2”,“名称”:“ egfgege”,“电子邮件”:“ ergeg@egrge.com”}

现在,如果我只想获取电子邮件值,则可以尝试:

  

console.log(profile.email);

     

console.log(profile [0] .email);

它们都不起作用,我未定义为输出,请您帮忙。

2 个答案:

答案 0 :(得分:0)

使用AsyncStorage.setItem( ... )存储值时,可以使用JSON.stringify将整个对象转换为String。这意味着,如果要返回“普通” Object(以使用点运算符),则必须使用JSON.parse

const profile = await AsyncStorage.getItem('userProf');
console.log(JSON.parse(profile));

答案 1 :(得分:0)

随着AsyncStorage接收并返回一个字符串,您将需要将该字符串解析为json。您已经在使用JSON.stringify保存对象,您需要执行相反的操作才能使其恢复为对象。

const savedProfile = await AsyncStorage.getItem('userProf');
const profile = JSON.parse(savedProfile);

然后,您应该能够像平常一样访问它的属性,例如

const userId = profile.userId;
const email = profile.email;
const name = profile.name;

您可能要确保执行检查,以确保AsyncStorage返回的值不为null,因为这会给您带来麻烦。此外,await函数可能会抛出,因此您应确保将对AsyncStorage的调用包装在try/catch

async componentWillMount(){
  try {
    const savedProfile = await AsyncStorage.getItem('userProf');
    // you should check that the savedProfile is not null here
    const profile = JSON.parse(savedProfile);
    const userId = profile.userId;
    const email = profile.email;
    const name = profile.name;
  } catch (err) {
    console.warn(err);
  }
  console.log(profile);
}