从两个层次的深层对象中拉出值

时间:2017-05-22 22:06:15

标签: javascript parsing typescript

我试图从两级深度对象数据结构中检索一个特定值。不过,首先,我将保存到函数中的变量中,如下所示:

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"在这种情况下?

4 个答案:

答案 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。 谢谢