我试图从两级深度对象数据结构中检索一个特定值。不过,首先,我将保存到函数中的变量中,如下所示:
getTargetId() {
if (this.authenticationService.isAuthenticated()) {
const userInfo = sessionStorage.getItem('currentUser');
console.log(userInfo);
}
}
自:
console.log(userInfo);
我在控制台中找到了这个:
{"token":"sometoken.value","data":{"_id":"8cd0362c0", "phone":"555-4343"...}
我想要做的是专门拔出" _id"这里的价值。
我试过了:
的console.log(userInfo.data._id);
但是我的IDE却向我显示错误:
' Property' _id'类型'字符串'。
上不存在
如何挖掘" _id"在这种情况下?
答案 0 :(得分:3)
您访问错误
试试{}
在对象的日志中,您可以通过data
表示data
是另一个对象,因此在访问console.log(userInfo);
后,您可以像访问任何其他对象一样访问其属性。
我也看到你正在
' Property' _id'类型'字符串'。
上不存在
这可能意味着您从未解析过这些信息。为了确定是否是这种情况,这应该是正确的:
运行 - >
{"token":"sometoken.value","data":{"_id":"8cd0362c0", "phone":"555-4343"...}
Returns->
console.log(typeof userInfo);
在此代码之后:
运行 - >
"string"
Returns->
userInfo = JSON.parse(sessionStorage.getItem('currentUser') );
console.log(userInfo.data._id);
通过编辑,我可以看到情况就是如此 尝试:
class="col-md-12 col-sm-12 col-xs-12"
答案 1 :(得分:1)
heigth-1
属性位于_id
密钥:
data
您也可以使用解构:
const response = {
"token":"sometoken.value",
"data": {
"_id":"8cd0362c0",
"phone":"555-4343"
}
};
console.log(response.data._id)
或:
const { _id } = response.data;
console.log(_id)
答案 2 :(得分:1)
所以,正如@jonsharpe指出的那样,关键是首先是JSON.parse字符串。所以这让我得到了我需要的价值" _id":
^.*?(?:[N°#Nº]\s*)?\d+
答案 3 :(得分:0)
实际上你的字符串是作为JSON字符串返回的。因此,如果使用js,则必须使用 JSON.parse()将其解析为对象;如果使用Jquery,则必须使用 $。parseJSON()将其解析为对象。所以你的更新代码现在看起来像这样。
var user ='{"token":"sometoken.value","data":{"_id":"8cd0362c0", "phone":"555-4343"}}';
var k = JSON.parse(user);
alert(k.data._id);

而小提琴是here。 谢谢