JSON.parse()之后无法访问对象的属性

时间:2018-08-31 23:54:49

标签: javascript rest

我的函数接受来自RESTful API的包含JSON对象的字符串。

例如:"[{"user":"Nate A.","time":"2018-08-31T21:26:14.432Z"},{"user":"Nate A.","time":"2018-08-31T21:26:27.567Z"}]"

我想遍历此数组中的对象。所以我

var json = JSON.parse(string);
json.foreach(function(user) {
    console.log(user['time'];
}

当我console.log()对象时,一切看起来都正确。但是,当我尝试访问console.log(json.name)console.log(json['name'])之类的属性时,我得到了undefined。我肯定知道我要在JSON.parse之后访问对象,而不是尝试获取字符串的属性。有什么作用?

var otherUsers = JSON.parse(this.responseText);
    otherUsers.forEach(user => {
        console.log(user['name']); // undefined
        console.log(user.name); // undefined
        console.log(JSON.stringify(user)); // [{"user":"Nate A.","time":"2018-08-31T21:26:14.432Z"},{"user":"Nate A.","time":"2018-08-31T21:26:27.567Z"}]
    }

感谢任何提示!

3 个答案:

答案 0 :(得分:0)

正如评论所说,您正在尝试访问该对象的属性name,但该属性不存在。

for(user of json){
  console.log(user.user)
  console.log(user.time)
}

答案 1 :(得分:0)

也许有帮助,没有name属性,但是您的代码正确。

var str = '[{"user":"Nate A.","time":"2018-08-31T21:26:14.432Z"},{"user":"Nate A.","time":"2018-08-31T21:26:27.567Z"}]'


var arr = JSON.parse(str);

arr.forEach(o => {
    console.log(o.name)//<-- undefined because there is no "name" property

    //both works 
    console.log(o.user)
    console.log(o['user'])

    console.log(o.time)
});

答案 2 :(得分:0)

当您将json对象声明为数组(带有[])时-您应访问数组的第一位,例如

json[0].user
相关问题