Async项中键的存储检索值



我是Javascript和react native的新手,这个问题本身可能很容易回答。

我正在设置一个AsyncStorage并在存储中创建一个项目,这是一个. json,有3个关键值。

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);

如何访问特殊键userId"inside my item "userData"而不是整个项目本身?我不能处理这个项目,因为它是一个字符串,我不能把它当作一个对象,这是我的问题。

感谢您的阅读和帮助!

您需要首先解析使用JSON.parse()从AsyncStorage获得的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返回的字符串,你应该在你的方式。

const userData = await AsyncStorage.getItem('userData');
const personalId = JSON.parse(userData).userId;

您还应该将上述代码包装在try-catch中,以确保在尝试解析无效数据并抛出错误时捕获错误。

最新更新