Javascript 异步存储检索项中键的值
我是Javascript新手,并且是本地人,这个问题本身可能很容易回答 我正在设置一个异步存储并在存储中创建一个项,它是一个.JSON,有3个键值Javascript 异步存储检索项中键的值,javascript,reactjs,react-native,asyncstorage,Javascript,Reactjs,React Native,Asyncstorage,我是Javascript新手,并且是本地人,这个问题本身可能很容易回答 我正在设置一个异步存储并在存储中创建一个项,它是一个.JSON,有3个键值 const saveDataToStorage = (token, userId, expirationDate) => { AsyncStorage.setItem('userData', JSON.stringify({ token: token, userId: userId, expiryDate: ex
const saveDataToStorage = (token, userId, expirationDate) => {
AsyncStorage.setItem('userData', JSON.stringify({
token: token,
userId: userId,
expiryDate: expirationDate.toISOString()
}))
};
我现在想做的是在项目的另一部分中从该项检索“userId”值,但问题是
var PersonalId = await AsyncStorage.getItem('userData');
console.log(PersonalId);
console.log(typeof PersonalId);
我知道如何访问项目本身,但我不知道如何访问其中的特殊密钥。我无法使用以下命令:
var PersonalId = await AsyncStorage.getItem('userData').userId;
因为AsyncStorage中的项是一个字符串,所以我知道这一点,因为我是从代码的第二行获得此信息的
console.log(typeof PersonalId);
如何访问项目“userData”中的特殊键“userId”,而不是整个项目本身?我无论如何都不能处理这个项目,因为它是一个字符串,我不能把它当作一个对象,这就是我的问题
感谢您的阅读和帮助 首先需要使用
JSON.parse()
将从异步存储中获取的值解析为JSON对象。试试这个实现
const get_data = async () => {
const userData = await AsyncStorage.getItem("userData");
const userObject = userData !== null ? JSON.parse(userData) : {};
const personalId = userObject.userId;
console.log(personalId);
};
您忘记了在将JSON保存到存储之前对其进行了字符串化。。所以当你们读它的时候,你们得到了字符串。只要
JSON.parse
返回的字符串,您就可以上路了
constuserdata=await AsyncStorage.getItem('userData');
const personalId=JSON.parse(userData).userId;
您还应该将上述代码包装在try-catch中,以确保在尝试解析无效数据并引发错误时捕获错误。您忘记了在将JSON保存到存储之前对其进行了字符串化。。所以当你们读它的时候,你们得到了字符串。只需
JSON.parse
返回的字符串,您就可以上路了。@rahulpsd18您的答案是我解决问题的关键。如果你把这个评论作为一个答案,我会给你一个绿色的钩子!这不会是一个问题,只是在代码的其他部分中,我需要整个数据集,它是一个字符串。只有在这种特殊情况下,我才需要将其“转换”为对象,但您的回答对我有所帮助,因为我理解了JSON.parse(),并且通过它,我能够将字符串转换为对象并正确读取键值!我很高兴,谢谢