异步存储检索项目中键的值
Async Storage retrieve value of key in item
我是 Javascript 的新手并且是本地人,问题本身可能很容易回答。
我正在设置一个 AsyncStorage 并在存储中创建一个项目,它是一个具有 3 个键值的 .JSON。
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()
将从 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 中,以确保在尝试解析无效数据并抛出错误时捕获错误。
我是 Javascript 的新手并且是本地人,问题本身可能很容易回答。
我正在设置一个 AsyncStorage 并在存储中创建一个项目,它是一个具有 3 个键值的 .JSON。
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()
将从 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 中,以确保在尝试解析无效数据并抛出错误时捕获错误。